{
    "name": "gcp",
    "displayName": "Google Cloud",
    "description": "A Pulumi package for creating and managing Google Cloud Platform resources.",
    "keywords": [
        "pulumi",
        "gcp"
    ],
    "homepage": "https://pulumi.io",
    "license": "Apache-2.0",
    "attribution": "This Pulumi package is based on the [`google-beta` Terraform Provider](https://github.com/hashicorp/terraform-provider-google-beta).",
    "repository": "https://github.com/pulumi/pulumi-gcp",
    "meta": {
        "moduleFormat": "(.*)(?:/[^/]*)"
    },
    "language": {
        "csharp": {
            "packageReferences": {
                "Pulumi": "3.*"
            },
            "namespaces": {
                "accessapproval": "AccessApproval",
                "accesscontextmanager": "AccessContextManager",
                "activedirectory": "ActiveDirectory",
                "alloydb": "Alloydb",
                "apigateway": "ApiGateway",
                "apigee": "Apigee",
                "apihub": "ApiHub",
                "appengine": "AppEngine",
                "apphub": "Apphub",
                "applicationintegration": "ApplicationIntegration",
                "artifactregistry": "ArtifactRegistry",
                "assuredworkloads": "AssuredWorkloads",
                "backupdisasterrecovery": "BackupDisasterRecovery",
                "beyondcorp": "Beyondcorp",
                "biglake": "BigLake",
                "bigquery": "BigQuery",
                "bigqueryanalyticshub": "BigQueryAnalyticsHub",
                "bigquerydatapolicy": "BigQueryDataPolicy",
                "bigtable": "BigTable",
                "billing": "Billing",
                "binaryauthorization": "BinaryAuthorization",
                "blockchainnodeengine": "BlockchainNodeEngine",
                "certificateauthority": "CertificateAuthority",
                "certificatemanager": "CertificateManager",
                "ces": "Ces",
                "chronicle": "Chronicle",
                "cloudasset": "CloudAsset",
                "cloudbuild": "CloudBuild",
                "cloudbuildv2": "CloudBuildV2",
                "clouddeploy": "CloudDeploy",
                "clouddomains": "CloudDomains",
                "cloudfunctions": "CloudFunctions",
                "cloudfunctionsv2": "CloudFunctionsV2",
                "cloudidentity": "CloudIdentity",
                "cloudids": "CloudIds",
                "cloudquota": "CloudQuota",
                "cloudrun": "CloudRun",
                "cloudrunv2": "CloudRunV2",
                "cloudscheduler": "CloudScheduler",
                "cloudsecuritycompliance": "CloudSecurityCompliance",
                "cloudtasks": "CloudTasks",
                "colab": "Colab",
                "composer": "Composer",
                "compute": "Compute",
                "configdeployment": "ConfigDeployment",
                "contactcenterinsights": "ContactCenterInsights",
                "container": "Container",
                "containeranalysis": "ContainerAnalysis",
                "databasemigrationservice": "DatabaseMigrationService",
                "datacatalog": "DataCatalog",
                "dataflow": "Dataflow",
                "dataform": "Dataform",
                "datafusion": "DataFusion",
                "datalineage": "DataLineage",
                "dataloss": "DataLoss",
                "dataplex": "DataPlex",
                "dataproc": "Dataproc",
                "datastream": "Datastream",
                "deploymentmanager": "DeploymentManager",
                "developerconnect": "DeveloperConnect",
                "diagflow": "Diagflow",
                "discoveryengine": "DiscoveryEngine",
                "dns": "Dns",
                "documentai": "DocumentAi",
                "edgecontainer": "EdgeContainer",
                "edgenetwork": "EdgeNetwork",
                "endpoints": "Endpoints",
                "essentialcontacts": "EssentialContacts",
                "eventarc": "Eventarc",
                "filestore": "Filestore",
                "firebase": "Firebase",
                "firebaserules": "Firebaserules",
                "firestore": "Firestore",
                "folder": "Folder",
                "gcp": "Gcp",
                "gemini": "Gemini",
                "gkebackup": "GkeBackup",
                "gkehub": "GkeHub",
                "gkeonprem": "GkeOnPrem",
                "healthcare": "Healthcare",
                "hypercomputecluster": "HyperComputeCluster",
                "iam": "Iam",
                "iap": "Iap",
                "identityplatform": "IdentityPlatform",
                "integrationconnectors": "IntegrationConnectors",
                "kms": "Kms",
                "licensemanager": "LicenseManager",
                "logging": "Logging",
                "looker": "Looker",
                "lustre": "Lustre",
                "managedkafka": "ManagedKafka",
                "memcache": "Memcache",
                "memorystore": "MemoryStore",
                "migrationcenter": "MigrationCenter",
                "ml": "ML",
                "modelarmor": "ModelArmor",
                "monitoring": "Monitoring",
                "netapp": "Netapp",
                "networkconnectivity": "NetworkConnectivity",
                "networkmanagement": "NetworkManagement",
                "networksecurity": "NetworkSecurity",
                "networkservices": "NetworkServices",
                "notebooks": "Notebooks",
                "observability": "Observability",
                "oracledatabase": "OracleDatabase",
                "organizations": "Organizations",
                "orgpolicy": "OrgPolicy",
                "osconfig": "OsConfig",
                "oslogin": "OsLogin",
                "parallelstore": "ParallelStore",
                "parametermanager": "ParameterManager",
                "privilegedaccessmanager": "PrivilegedAccessManager",
                "projects": "Projects",
                "pubsub": "PubSub",
                "recaptcha": "Recaptcha",
                "redis": "Redis",
                "resourcemanager": "ResourceManager",
                "runtimeconfig": "RuntimeConfig",
                "saasruntime": "SaaSRuntime",
                "secretmanager": "SecretManager",
                "securesourcemanager": "SecureSourceManager",
                "securitycenter": "SecurityCenter",
                "securityposture": "SecurityPosture",
                "serviceaccount": "ServiceAccount",
                "servicedirectory": "ServiceDirectory",
                "servicenetworking": "ServiceNetworking",
                "serviceusage": "ServiceUsage",
                "siteverification": "SiteVerification",
                "sourcerepo": "SourceRepo",
                "spanner": "Spanner",
                "sql": "Sql",
                "storage": "Storage",
                "tags": "Tags",
                "tpu": "Tpu",
                "transcoder": "Transcoder",
                "vectorsearch": "VectorSearch",
                "vertex": "Vertex",
                "vmwareengine": "VMwareEngine",
                "vpcaccess": "VpcAccess",
                "workbench": "Workbench",
                "workflows": "Workflows",
                "workstations": "Workstations"
            },
            "compatibility": "tfbridge20",
            "respectSchemaVersion": true
        },
        "go": {
            "importBasePath": "github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp",
            "generateResourceContainerTypes": true,
            "generateExtraInputTypes": true,
            "respectSchemaVersion": true
        },
        "nodejs": {
            "packageDescription": "A Pulumi package for creating and managing Google Cloud Platform resources.",
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/hashicorp/terraform-provider-google-beta)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-gcp` repo](https://github.com/pulumi/pulumi-gcp/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-google-beta` repo](https://github.com/hashicorp/terraform-provider-google-beta/issues).",
            "dependencies": {
                "@npmcli/package-json": "^6.2.0",
                "@types/express": "^4.16.0"
            },
            "devDependencies": {
                "@types/node": "^18.0.0"
            },
            "resolutions": {
                "@types/mime": "3.0.4"
            },
            "compatibility": "tfbridge20",
            "disableUnionOutputTypes": true,
            "respectSchemaVersion": true
        },
        "python": {
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/hashicorp/terraform-provider-google-beta)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-gcp` repo](https://github.com/pulumi/pulumi-gcp/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-google-beta` repo](https://github.com/hashicorp/terraform-provider-google-beta/issues).",
            "compatibility": "tfbridge20",
            "respectSchemaVersion": true,
            "pyproject": {
                "enabled": true
            },
            "inputTypes": "classes-and-dicts"
        }
    },
    "config": {
        "variables": {
            "accessApprovalCustomEndpoint": {
                "type": "string"
            },
            "accessContextManagerCustomEndpoint": {
                "type": "string"
            },
            "accessToken": {
                "type": "string",
                "secret": true
            },
            "activeDirectoryCustomEndpoint": {
                "type": "string"
            },
            "addPulumiAttributionLabel": {
                "type": "boolean"
            },
            "alloydbCustomEndpoint": {
                "type": "string"
            },
            "apiGatewayCustomEndpoint": {
                "type": "string"
            },
            "apigeeCustomEndpoint": {
                "type": "string"
            },
            "apihubCustomEndpoint": {
                "type": "string"
            },
            "apikeysCustomEndpoint": {
                "type": "string"
            },
            "appEngineCustomEndpoint": {
                "type": "string"
            },
            "apphubCustomEndpoint": {
                "type": "string"
            },
            "artifactRegistryCustomEndpoint": {
                "type": "string"
            },
            "assuredWorkloadsCustomEndpoint": {
                "type": "string"
            },
            "backupDrCustomEndpoint": {
                "type": "string"
            },
            "batching": {
                "$ref": "#/types/gcp:config/batching:batching"
            },
            "beyondcorpCustomEndpoint": {
                "type": "string"
            },
            "bigQueryCustomEndpoint": {
                "type": "string"
            },
            "biglakeCustomEndpoint": {
                "type": "string"
            },
            "biglakeHiveCustomEndpoint": {
                "type": "string"
            },
            "biglakeIcebergCustomEndpoint": {
                "type": "string"
            },
            "bigqueryAnalyticsHubCustomEndpoint": {
                "type": "string"
            },
            "bigqueryConnectionCustomEndpoint": {
                "type": "string"
            },
            "bigqueryDataTransferCustomEndpoint": {
                "type": "string"
            },
            "bigqueryDatapolicyCustomEndpoint": {
                "type": "string"
            },
            "bigqueryDatapolicyv2CustomEndpoint": {
                "type": "string"
            },
            "bigqueryReservationCustomEndpoint": {
                "type": "string"
            },
            "bigtableCustomEndpoint": {
                "type": "string"
            },
            "billingBudgetsCustomEndpoint": {
                "type": "string"
            },
            "billingCustomEndpoint": {
                "type": "string"
            },
            "billingProject": {
                "type": "string"
            },
            "binaryAuthorizationCustomEndpoint": {
                "type": "string"
            },
            "blockchainNodeEngineCustomEndpoint": {
                "type": "string"
            },
            "certificateManagerCustomEndpoint": {
                "type": "string"
            },
            "cesCustomEndpoint": {
                "type": "string"
            },
            "chronicleCustomEndpoint": {
                "type": "string"
            },
            "cloudAssetCustomEndpoint": {
                "type": "string"
            },
            "cloudBillingCustomEndpoint": {
                "type": "string"
            },
            "cloudBuildCustomEndpoint": {
                "type": "string"
            },
            "cloudFunctionsCustomEndpoint": {
                "type": "string"
            },
            "cloudIdentityCustomEndpoint": {
                "type": "string"
            },
            "cloudIdsCustomEndpoint": {
                "type": "string"
            },
            "cloudQuotasCustomEndpoint": {
                "type": "string"
            },
            "cloudResourceManagerCustomEndpoint": {
                "type": "string"
            },
            "cloudRunCustomEndpoint": {
                "type": "string"
            },
            "cloudRunV2CustomEndpoint": {
                "type": "string"
            },
            "cloudSchedulerCustomEndpoint": {
                "type": "string"
            },
            "cloudSecurityComplianceCustomEndpoint": {
                "type": "string"
            },
            "cloudTasksCustomEndpoint": {
                "type": "string"
            },
            "cloudbuildv2CustomEndpoint": {
                "type": "string"
            },
            "clouddeployCustomEndpoint": {
                "type": "string"
            },
            "clouddomainsCustomEndpoint": {
                "type": "string"
            },
            "cloudfunctions2CustomEndpoint": {
                "type": "string"
            },
            "colabCustomEndpoint": {
                "type": "string"
            },
            "composerCustomEndpoint": {
                "type": "string"
            },
            "computeCustomEndpoint": {
                "type": "string"
            },
            "configCustomEndpoint": {
                "type": "string"
            },
            "contactCenterInsightsCustomEndpoint": {
                "type": "string"
            },
            "containerAnalysisCustomEndpoint": {
                "type": "string"
            },
            "containerAttachedCustomEndpoint": {
                "type": "string"
            },
            "containerAwsCustomEndpoint": {
                "type": "string"
            },
            "containerAzureCustomEndpoint": {
                "type": "string"
            },
            "containerCustomEndpoint": {
                "type": "string"
            },
            "coreBillingCustomEndpoint": {
                "type": "string"
            },
            "credentials": {
                "type": "string"
            },
            "dataCatalogCustomEndpoint": {
                "type": "string"
            },
            "dataFusionCustomEndpoint": {
                "type": "string"
            },
            "dataLineageCustomEndpoint": {
                "type": "string"
            },
            "dataLossPreventionCustomEndpoint": {
                "type": "string"
            },
            "dataPipelineCustomEndpoint": {
                "type": "string"
            },
            "databaseMigrationServiceCustomEndpoint": {
                "type": "string"
            },
            "dataflowCustomEndpoint": {
                "type": "string"
            },
            "dataformCustomEndpoint": {
                "type": "string"
            },
            "dataplexCustomEndpoint": {
                "type": "string"
            },
            "dataprocCustomEndpoint": {
                "type": "string"
            },
            "dataprocGdcCustomEndpoint": {
                "type": "string"
            },
            "dataprocMetastoreCustomEndpoint": {
                "type": "string"
            },
            "datastreamCustomEndpoint": {
                "type": "string"
            },
            "defaultLabels": {
                "type": "object",
                "additionalProperties": {
                    "type": "string"
                }
            },
            "deletionPolicy": {
                "type": "string"
            },
            "deploymentManagerCustomEndpoint": {
                "type": "string"
            },
            "developerConnectCustomEndpoint": {
                "type": "string"
            },
            "dialogflowCustomEndpoint": {
                "type": "string"
            },
            "dialogflowCxCustomEndpoint": {
                "type": "string"
            },
            "disableGlobalProjectWarning": {
                "type": "boolean",
                "default": false,
                "defaultInfo": {
                    "environment": [
                        "PULUMI_GCP_DISABLE_GLOBAL_PROJECT_WARNING"
                    ]
                }
            },
            "disableGooglePartnerName": {
                "type": "boolean"
            },
            "discoveryEngineCustomEndpoint": {
                "type": "string"
            },
            "dnsCustomEndpoint": {
                "type": "string"
            },
            "documentAiCustomEndpoint": {
                "type": "string"
            },
            "documentAiWarehouseCustomEndpoint": {
                "type": "string"
            },
            "edgecontainerCustomEndpoint": {
                "type": "string"
            },
            "edgenetworkCustomEndpoint": {
                "type": "string"
            },
            "essentialContactsCustomEndpoint": {
                "type": "string"
            },
            "eventarcCustomEndpoint": {
                "type": "string"
            },
            "externalCredentials": {
                "$ref": "#/types/gcp:config/externalCredentials:externalCredentials"
            },
            "filestoreCustomEndpoint": {
                "type": "string"
            },
            "firebaseAiLogicCustomEndpoint": {
                "type": "string"
            },
            "firebaseAppCheckCustomEndpoint": {
                "type": "string"
            },
            "firebaseAppHostingCustomEndpoint": {
                "type": "string"
            },
            "firebaseCustomEndpoint": {
                "type": "string"
            },
            "firebaseDataConnectCustomEndpoint": {
                "type": "string"
            },
            "firebaseDatabaseCustomEndpoint": {
                "type": "string"
            },
            "firebaseExtensionsCustomEndpoint": {
                "type": "string"
            },
            "firebaseHostingCustomEndpoint": {
                "type": "string"
            },
            "firebaseRemoteConfigCustomEndpoint": {
                "type": "string"
            },
            "firebaseStorageCustomEndpoint": {
                "type": "string"
            },
            "firebaserulesCustomEndpoint": {
                "type": "string"
            },
            "firestoreCustomEndpoint": {
                "type": "string"
            },
            "geminiCustomEndpoint": {
                "type": "string"
            },
            "gkeBackupCustomEndpoint": {
                "type": "string"
            },
            "gkeHub2CustomEndpoint": {
                "type": "string"
            },
            "gkeHubCustomEndpoint": {
                "type": "string"
            },
            "gkeonpremCustomEndpoint": {
                "type": "string"
            },
            "googlePartnerName": {
                "type": "string"
            },
            "healthcareCustomEndpoint": {
                "type": "string"
            },
            "hypercomputeclusterCustomEndpoint": {
                "type": "string"
            },
            "iam2CustomEndpoint": {
                "type": "string"
            },
            "iam3CustomEndpoint": {
                "type": "string"
            },
            "iamBetaCustomEndpoint": {
                "type": "string"
            },
            "iamCredentialsCustomEndpoint": {
                "type": "string"
            },
            "iamCustomEndpoint": {
                "type": "string"
            },
            "iamWorkforcePoolCustomEndpoint": {
                "type": "string"
            },
            "iapCustomEndpoint": {
                "type": "string"
            },
            "identityPlatformCustomEndpoint": {
                "type": "string"
            },
            "impersonateServiceAccount": {
                "type": "string"
            },
            "impersonateServiceAccountDelegates": {
                "type": "array",
                "items": {
                    "type": "string"
                }
            },
            "integrationConnectorsCustomEndpoint": {
                "type": "string"
            },
            "integrationsCustomEndpoint": {
                "type": "string"
            },
            "kmsCustomEndpoint": {
                "type": "string"
            },
            "licenseManagerCustomEndpoint": {
                "type": "string"
            },
            "loggingCustomEndpoint": {
                "type": "string"
            },
            "lookerCustomEndpoint": {
                "type": "string"
            },
            "lustreCustomEndpoint": {
                "type": "string"
            },
            "managedKafkaCustomEndpoint": {
                "type": "string"
            },
            "memcacheCustomEndpoint": {
                "type": "string"
            },
            "memorystoreCustomEndpoint": {
                "type": "string"
            },
            "migrationCenterCustomEndpoint": {
                "type": "string"
            },
            "mlEngineCustomEndpoint": {
                "type": "string"
            },
            "modelArmorCustomEndpoint": {
                "type": "string"
            },
            "modelArmorGlobalCustomEndpoint": {
                "type": "string"
            },
            "monitoringCustomEndpoint": {
                "type": "string"
            },
            "netappCustomEndpoint": {
                "type": "string"
            },
            "networkConnectivityCustomEndpoint": {
                "type": "string"
            },
            "networkConnectivityv1CustomEndpoint": {
                "type": "string"
            },
            "networkManagementCustomEndpoint": {
                "type": "string"
            },
            "networkSecurityCustomEndpoint": {
                "type": "string"
            },
            "networkServicesCustomEndpoint": {
                "type": "string"
            },
            "notebooksCustomEndpoint": {
                "type": "string"
            },
            "observabilityCustomEndpoint": {
                "type": "string"
            },
            "oracleDatabaseCustomEndpoint": {
                "type": "string"
            },
            "orgPolicyCustomEndpoint": {
                "type": "string"
            },
            "osConfigCustomEndpoint": {
                "type": "string"
            },
            "osConfigV2CustomEndpoint": {
                "type": "string"
            },
            "osLoginCustomEndpoint": {
                "type": "string"
            },
            "parallelstoreCustomEndpoint": {
                "type": "string"
            },
            "parameterManagerCustomEndpoint": {
                "type": "string"
            },
            "parameterManagerRegionalCustomEndpoint": {
                "type": "string"
            },
            "pollInterval": {
                "type": "string"
            },
            "preferGlobalEndpoints": {
                "type": "boolean"
            },
            "preferRegionalEndpoints": {
                "type": "boolean"
            },
            "privatecaCustomEndpoint": {
                "type": "string"
            },
            "privilegedAccessManagerCustomEndpoint": {
                "type": "string"
            },
            "project": {
                "type": "string",
                "defaultInfo": {
                    "environment": [
                        "GOOGLE_PROJECT",
                        "GOOGLE_CLOUD_PROJECT",
                        "GCLOUD_PROJECT",
                        "CLOUDSDK_CORE_PROJECT"
                    ]
                }
            },
            "publicCaCustomEndpoint": {
                "type": "string"
            },
            "pubsubCustomEndpoint": {
                "type": "string"
            },
            "pubsubLiteCustomEndpoint": {
                "type": "string"
            },
            "pulumiAttributionLabelAdditionStrategy": {
                "type": "string"
            },
            "recaptchaEnterpriseCustomEndpoint": {
                "type": "string"
            },
            "redisCustomEndpoint": {
                "type": "string"
            },
            "region": {
                "type": "string",
                "defaultInfo": {
                    "environment": [
                        "GOOGLE_REGION",
                        "GCLOUD_REGION",
                        "CLOUDSDK_COMPUTE_REGION"
                    ]
                }
            },
            "requestReason": {
                "type": "string"
            },
            "requestTimeout": {
                "type": "string"
            },
            "resourceManager3CustomEndpoint": {
                "type": "string"
            },
            "resourceManagerCustomEndpoint": {
                "type": "string"
            },
            "resourceManagerV3CustomEndpoint": {
                "type": "string"
            },
            "runtimeConfigCustomEndpoint": {
                "type": "string"
            },
            "runtimeconfigCustomEndpoint": {
                "type": "string"
            },
            "saasRuntimeCustomEndpoint": {
                "type": "string"
            },
            "scopes": {
                "type": "array",
                "items": {
                    "type": "string"
                }
            },
            "secretManagerCustomEndpoint": {
                "type": "string"
            },
            "secretManagerRegionalCustomEndpoint": {
                "type": "string"
            },
            "secureSourceManagerCustomEndpoint": {
                "type": "string"
            },
            "securityCenterCustomEndpoint": {
                "type": "string"
            },
            "securityCenterManagementCustomEndpoint": {
                "type": "string"
            },
            "securityCenterV2CustomEndpoint": {
                "type": "string"
            },
            "securityScannerCustomEndpoint": {
                "type": "string"
            },
            "securitypostureCustomEndpoint": {
                "type": "string"
            },
            "serviceDirectoryCustomEndpoint": {
                "type": "string"
            },
            "serviceManagementCustomEndpoint": {
                "type": "string"
            },
            "serviceNetworkingCustomEndpoint": {
                "type": "string"
            },
            "serviceUsageCustomEndpoint": {
                "type": "string"
            },
            "siteVerificationCustomEndpoint": {
                "type": "string"
            },
            "skipRegionValidation": {
                "type": "boolean",
                "default": false,
                "defaultInfo": {
                    "environment": [
                        "PULUMI_GCP_SKIP_REGION_VALIDATION"
                    ]
                }
            },
            "sourceRepoCustomEndpoint": {
                "type": "string"
            },
            "spannerCustomEndpoint": {
                "type": "string"
            },
            "sqlCustomEndpoint": {
                "type": "string"
            },
            "storageBatchOperationsCustomEndpoint": {
                "type": "string"
            },
            "storageControlCustomEndpoint": {
                "type": "string"
            },
            "storageCustomEndpoint": {
                "type": "string"
            },
            "storageInsightsCustomEndpoint": {
                "type": "string"
            },
            "storageTransferCustomEndpoint": {
                "type": "string"
            },
            "tagsCustomEndpoint": {
                "type": "string"
            },
            "tagsLocationCustomEndpoint": {
                "type": "string"
            },
            "tpuV2CustomEndpoint": {
                "type": "string"
            },
            "transcoderCustomEndpoint": {
                "type": "string"
            },
            "universeDomain": {
                "type": "string"
            },
            "userProjectOverride": {
                "type": "boolean"
            },
            "vectorSearchCustomEndpoint": {
                "type": "string"
            },
            "vertexAiCustomEndpoint": {
                "type": "string"
            },
            "vmwareengineCustomEndpoint": {
                "type": "string"
            },
            "vpcAccessCustomEndpoint": {
                "type": "string"
            },
            "workbenchCustomEndpoint": {
                "type": "string"
            },
            "workflowsCustomEndpoint": {
                "type": "string"
            },
            "workloadIdentityCustomEndpoint": {
                "type": "string"
            },
            "workstationsCustomEndpoint": {
                "type": "string"
            },
            "zone": {
                "type": "string",
                "defaultInfo": {
                    "environment": [
                        "GOOGLE_ZONE",
                        "GCLOUD_ZONE",
                        "CLOUDSDK_COMPUTE_ZONE"
                    ]
                }
            }
        }
    },
    "types": {
        "gcp:accesscontextmanager/AccessLevelBasic:AccessLevelBasic": {
            "properties": {
                "combiningFunction": {
                    "type": "string",
                    "description": "How the conditions list should be combined to determine if a request\nis granted this AccessLevel. If AND is used, each Condition in\nconditions must be satisfied for the AccessLevel to be applied. If\nOR is used, at least one Condition in conditions must be satisfied\nfor the AccessLevel to be applied.\nDefault value is `AND`.\nPossible values are: `AND`, `OR`.\n"
                },
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/AccessLevelBasicCondition:AccessLevelBasicCondition"
                    },
                    "description": "A set of requirements for the AccessLevel to be granted.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "conditions"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelBasicCondition:AccessLevelBasicCondition": {
            "properties": {
                "devicePolicy": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelBasicConditionDevicePolicy:AccessLevelBasicConditionDevicePolicy",
                    "description": "Device specific restrictions, all restrictions must hold for\nthe Condition to be true. If not specified, all devices are\nallowed.\nStructure is documented below.\n"
                },
                "ipSubnetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of CIDR block IP subnetwork specification. May be IPv4\nor IPv6.\nNote that for a CIDR IP address block, the specified IP address\nportion must be properly truncated (i.e. all the host bits must\nbe zero) or the input is considered malformed. For example,\n\"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly,\nfor IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\"\nis not. The originating IP of a request must be in one of the\nlisted subnets in order for this Condition to be true.\nIf empty, all IP addresses are allowed.\n"
                },
                "members": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An allowed list of members (users, service accounts).\nUsing groups is not supported yet.\nThe signed-in user originating the request must be a part of one\nof the provided members. If not specified, a request may come\nfrom any user (logged in/not logged in, not present in any\ngroups, etc.).\nFormats: `user:{emailid}`, `serviceAccount:{emailid}`\n"
                },
                "negate": {
                    "type": "boolean",
                    "description": "Whether to negate the Condition. If true, the Condition becomes\na NAND over its non-empty fields, each field must be false for\nthe Condition overall to be satisfied. Defaults to false.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The request must originate from one of the provided\ncountries/regions.\nFormat: A valid ISO 3166-1 alpha-2 code.\n"
                },
                "requiredAccessLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of other access levels defined in the same Policy,\nreferenced by resource name. Referencing an AccessLevel which\ndoes not exist is an error. All access levels listed must be\ngranted for the Condition to be true.\nFormat: accessPolicies/{policy_id}/accessLevels/{short_name}\n"
                },
                "vpcNetworkSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/AccessLevelBasicConditionVpcNetworkSource:AccessLevelBasicConditionVpcNetworkSource"
                    },
                    "description": "The request must originate from one of the provided VPC networks in Google Cloud. Cannot specify this field together with \u003cspan pulumi-lang-nodejs=\"`ipSubnetworks`\" pulumi-lang-dotnet=\"`IpSubnetworks`\" pulumi-lang-go=\"`ipSubnetworks`\" pulumi-lang-python=\"`ip_subnetworks`\" pulumi-lang-yaml=\"`ipSubnetworks`\" pulumi-lang-java=\"`ipSubnetworks`\" pulumi-lang-hcl=\"`ip_subnetworks`\"\u003e`ipSubnetworks`\u003c/span\u003e.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/AccessLevelBasicConditionDevicePolicy:AccessLevelBasicConditionDevicePolicy": {
            "properties": {
                "allowedDeviceManagementLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of allowed device management levels.\nAn empty list allows all management levels.\nEach value may be one of: `MANAGEMENT_UNSPECIFIED`, `NONE`, `BASIC`, `COMPLETE`.\n"
                },
                "allowedEncryptionStatuses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of allowed encryptions statuses.\nAn empty list allows all statuses.\nEach value may be one of: `ENCRYPTION_UNSPECIFIED`, `ENCRYPTION_UNSUPPORTED`, `UNENCRYPTED`, `ENCRYPTED`.\n"
                },
                "osConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/AccessLevelBasicConditionDevicePolicyOsConstraint:AccessLevelBasicConditionDevicePolicyOsConstraint"
                    },
                    "description": "A list of allowed OS versions.\nAn empty list allows all types and all versions.\nStructure is documented below.\n"
                },
                "requireAdminApproval": {
                    "type": "boolean",
                    "description": "Whether the device needs to be approved by the customer admin.\n"
                },
                "requireCorpOwned": {
                    "type": "boolean",
                    "description": "Whether the device needs to be corp owned.\n"
                },
                "requireScreenLock": {
                    "type": "boolean",
                    "description": "Whether or not screenlock is required for the DevicePolicy\nto be true. Defaults to false.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/AccessLevelBasicConditionDevicePolicyOsConstraint:AccessLevelBasicConditionDevicePolicyOsConstraint": {
            "properties": {
                "minimumVersion": {
                    "type": "string",
                    "description": "The minimum allowed OS version. If not set, any version\nof this OS satisfies the constraint.\nFormat: \"major.minor.patch\" such as \"10.5.301\", \"9.2.1\".\n"
                },
                "osType": {
                    "type": "string",
                    "description": "The operating system type of the device.\nPossible values are: `OS_UNSPECIFIED`, `DESKTOP_MAC`, `DESKTOP_WINDOWS`, `DESKTOP_LINUX`, `DESKTOP_CHROME_OS`, `ANDROID`, `IOS`.\n"
                },
                "requireVerifiedChromeOs": {
                    "type": "boolean",
                    "description": "If you specify DESKTOP_CHROME_OS for osType, you can optionally include requireVerifiedChromeOs to require Chrome Verified Access.\n"
                }
            },
            "type": "object",
            "required": [
                "osType"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelBasicConditionVpcNetworkSource:AccessLevelBasicConditionVpcNetworkSource": {
            "properties": {
                "vpcSubnetwork": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork:AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork",
                    "description": "Sub networks within a VPC network.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork:AccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller.\n"
                },
                "vpcIpSubnetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of CIDR block IP subnetwork specification. Must be IPv4.\n"
                }
            },
            "type": "object",
            "required": [
                "network"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelConditionDevicePolicy:AccessLevelConditionDevicePolicy": {
            "properties": {
                "allowedDeviceManagementLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of allowed device management levels.\nAn empty list allows all management levels.\nEach value may be one of: `MANAGEMENT_UNSPECIFIED`, `NONE`, `BASIC`, `COMPLETE`.\n",
                    "willReplaceOnChanges": true
                },
                "allowedEncryptionStatuses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of allowed encryptions statuses.\nAn empty list allows all statuses.\nEach value may be one of: `ENCRYPTION_UNSPECIFIED`, `ENCRYPTION_UNSUPPORTED`, `UNENCRYPTED`, `ENCRYPTED`.\n",
                    "willReplaceOnChanges": true
                },
                "osConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/AccessLevelConditionDevicePolicyOsConstraint:AccessLevelConditionDevicePolicyOsConstraint"
                    },
                    "description": "A list of allowed OS versions.\nAn empty list allows all types and all versions.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "requireAdminApproval": {
                    "type": "boolean",
                    "description": "Whether the device needs to be approved by the customer admin.\n",
                    "willReplaceOnChanges": true
                },
                "requireCorpOwned": {
                    "type": "boolean",
                    "description": "Whether the device needs to be corp owned.\n",
                    "willReplaceOnChanges": true
                },
                "requireScreenLock": {
                    "type": "boolean",
                    "description": "Whether or not screenlock is required for the DevicePolicy\nto be true. Defaults to false.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/AccessLevelConditionDevicePolicyOsConstraint:AccessLevelConditionDevicePolicyOsConstraint": {
            "properties": {
                "minimumVersion": {
                    "type": "string",
                    "description": "The minimum allowed OS version. If not set, any version\nof this OS satisfies the constraint.\nFormat: \"major.minor.patch\" such as \"10.5.301\", \"9.2.1\".\n",
                    "willReplaceOnChanges": true
                },
                "osType": {
                    "type": "string",
                    "description": "The operating system type of the device.\nPossible values are: `OS_UNSPECIFIED`, `DESKTOP_MAC`, `DESKTOP_WINDOWS`, `DESKTOP_LINUX`, `DESKTOP_CHROME_OS`, `ANDROID`, `IOS`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "osType"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelConditionVpcNetworkSource:AccessLevelConditionVpcNetworkSource": {
            "properties": {
                "vpcSubnetwork": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelConditionVpcNetworkSourceVpcSubnetwork:AccessLevelConditionVpcNetworkSourceVpcSubnetwork",
                    "description": "Sub networks within a VPC network.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/AccessLevelConditionVpcNetworkSourceVpcSubnetwork:AccessLevelConditionVpcNetworkSourceVpcSubnetwork": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller.\n",
                    "willReplaceOnChanges": true
                },
                "vpcIpSubnetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR block IP subnetwork specification. Must be IPv4.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "network"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelCustom:AccessLevelCustom": {
            "properties": {
                "expr": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelCustomExpr:AccessLevelCustomExpr",
                    "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language.\nThis page details the objects and attributes that are used to the build the CEL expressions for\ncustom access levels - https://cloud.google.com/access-context-manager/docs/custom-access-level-spec.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "expr"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelCustomExpr:AccessLevelCustomExpr": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file name and a position in the file\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevel:AccessLevelsAccessLevel": {
            "properties": {
                "basic": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelsAccessLevelBasic:AccessLevelsAccessLevelBasic",
                    "description": "A set of predefined conditions for the access level and a combining function.\nStructure is documented below.\n"
                },
                "custom": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelsAccessLevelCustom:AccessLevelsAccessLevelCustom",
                    "description": "Custom access level conditions are set using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request.\nSee CEL spec at: https://github.com/google/cel-spec.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the AccessLevel and its use. Does not affect behavior.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Resource name for the Access Level. The\u003cspan pulumi-lang-nodejs=\" shortName \" pulumi-lang-dotnet=\" ShortName \" pulumi-lang-go=\" shortName \" pulumi-lang-python=\" short_name \" pulumi-lang-yaml=\" shortName \" pulumi-lang-java=\" shortName \" pulumi-lang-hcl=\" short_name \"\u003e shortName \u003c/span\u003ecomponent must begin\nwith a letter and only include alphanumeric and '_'.\nFormat: accessPolicies/{policy_id}/accessLevels/{short_name}\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the Policy.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "title"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevelBasic:AccessLevelsAccessLevelBasic": {
            "properties": {
                "combiningFunction": {
                    "type": "string",
                    "description": "How the conditions list should be combined to determine if a request\nis granted this AccessLevel. If AND is used, each Condition in\nconditions must be satisfied for the AccessLevel to be applied. If\nOR is used, at least one Condition in conditions must be satisfied\nfor the AccessLevel to be applied.\nDefault value is `AND`.\nPossible values are: `AND`, `OR`.\n"
                },
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/AccessLevelsAccessLevelBasicCondition:AccessLevelsAccessLevelBasicCondition"
                    },
                    "description": "A set of requirements for the AccessLevel to be granted.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "conditions"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevelBasicCondition:AccessLevelsAccessLevelBasicCondition": {
            "properties": {
                "devicePolicy": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelsAccessLevelBasicConditionDevicePolicy:AccessLevelsAccessLevelBasicConditionDevicePolicy",
                    "description": "Device specific restrictions, all restrictions must hold for\nthe Condition to be true. If not specified, all devices are\nallowed.\nStructure is documented below.\n"
                },
                "ipSubnetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of CIDR block IP subnetwork specification. May be IPv4\nor IPv6.\nNote that for a CIDR IP address block, the specified IP address\nportion must be properly truncated (i.e. all the host bits must\nbe zero) or the input is considered malformed. For example,\n\"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly,\nfor IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\"\nis not. The originating IP of a request must be in one of the\nlisted subnets in order for this Condition to be true.\nIf empty, all IP addresses are allowed.\n"
                },
                "members": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An allowed list of members (users, service accounts).\nUsing groups is not supported yet.\nThe signed-in user originating the request must be a part of one\nof the provided members. If not specified, a request may come\nfrom any user (logged in/not logged in, not present in any\ngroups, etc.).\nFormats: `user:{emailid}`, `serviceAccount:{emailid}`\n"
                },
                "negate": {
                    "type": "boolean",
                    "description": "Whether to negate the Condition. If true, the Condition becomes\na NAND over its non-empty fields, each field must be false for\nthe Condition overall to be satisfied. Defaults to false.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The request must originate from one of the provided\ncountries/regions.\nFormat: A valid ISO 3166-1 alpha-2 code.\n"
                },
                "requiredAccessLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of other access levels defined in the same Policy,\nreferenced by resource name. Referencing an AccessLevel which\ndoes not exist is an error. All access levels listed must be\ngranted for the Condition to be true.\nFormat: accessPolicies/{policy_id}/accessLevels/{short_name}\n"
                },
                "vpcNetworkSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/AccessLevelsAccessLevelBasicConditionVpcNetworkSource:AccessLevelsAccessLevelBasicConditionVpcNetworkSource"
                    },
                    "description": "The request must originate from one of the provided VPC networks in Google Cloud. Cannot specify this field together with \u003cspan pulumi-lang-nodejs=\"`ipSubnetworks`\" pulumi-lang-dotnet=\"`IpSubnetworks`\" pulumi-lang-go=\"`ipSubnetworks`\" pulumi-lang-python=\"`ip_subnetworks`\" pulumi-lang-yaml=\"`ipSubnetworks`\" pulumi-lang-java=\"`ipSubnetworks`\" pulumi-lang-hcl=\"`ip_subnetworks`\"\u003e`ipSubnetworks`\u003c/span\u003e.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevelBasicConditionDevicePolicy:AccessLevelsAccessLevelBasicConditionDevicePolicy": {
            "properties": {
                "allowedDeviceManagementLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of allowed device management levels.\nAn empty list allows all management levels.\nEach value may be one of: `MANAGEMENT_UNSPECIFIED`, `NONE`, `BASIC`, `COMPLETE`.\n"
                },
                "allowedEncryptionStatuses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of allowed encryptions statuses.\nAn empty list allows all statuses.\nEach value may be one of: `ENCRYPTION_UNSPECIFIED`, `ENCRYPTION_UNSUPPORTED`, `UNENCRYPTED`, `ENCRYPTED`.\n"
                },
                "osConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraint:AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraint"
                    },
                    "description": "A list of allowed OS versions.\nAn empty list allows all types and all versions.\nStructure is documented below.\n"
                },
                "requireAdminApproval": {
                    "type": "boolean",
                    "description": "Whether the device needs to be approved by the customer admin.\n"
                },
                "requireCorpOwned": {
                    "type": "boolean",
                    "description": "Whether the device needs to be corp owned.\n"
                },
                "requireScreenLock": {
                    "type": "boolean",
                    "description": "Whether or not screenlock is required for the DevicePolicy\nto be true. Defaults to false.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraint:AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraint": {
            "properties": {
                "minimumVersion": {
                    "type": "string",
                    "description": "The minimum allowed OS version. If not set, any version\nof this OS satisfies the constraint.\nFormat: \"major.minor.patch\" such as \"10.5.301\", \"9.2.1\".\n"
                },
                "osType": {
                    "type": "string",
                    "description": "The operating system type of the device.\nPossible values are: `OS_UNSPECIFIED`, `DESKTOP_MAC`, `DESKTOP_WINDOWS`, `DESKTOP_LINUX`, `DESKTOP_CHROME_OS`, `ANDROID`, `IOS`.\n"
                }
            },
            "type": "object",
            "required": [
                "osType"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevelBasicConditionVpcNetworkSource:AccessLevelsAccessLevelBasicConditionVpcNetworkSource": {
            "properties": {
                "vpcSubnetwork": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelsAccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork:AccessLevelsAccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork",
                    "description": "Sub networks within a VPC network.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork:AccessLevelsAccessLevelBasicConditionVpcNetworkSourceVpcSubnetwork": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "Required. Network name to be allowed by this Access Level. Networks of foreign organizations requires `compute.network.get` permission to be granted to caller.\n"
                },
                "vpcIpSubnetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR block IP subnetwork specification. Must be IPv4.\n"
                }
            },
            "type": "object",
            "required": [
                "network"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevelCustom:AccessLevelsAccessLevelCustom": {
            "properties": {
                "expr": {
                    "$ref": "#/types/gcp:accesscontextmanager/AccessLevelsAccessLevelCustomExpr:AccessLevelsAccessLevelCustomExpr",
                    "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language.\nThis page details the objects and attributes that are used to the build the CEL expressions for\ncustom access levels - https://cloud.google.com/access-context-manager/docs/custom-access-level-spec.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "expr"
            ]
        },
        "gcp:accesscontextmanager/AccessLevelsAccessLevelCustomExpr:AccessLevelsAccessLevelCustomExpr": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file name and a position in the file\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:accesscontextmanager/AccessPolicyIamBindingCondition:AccessPolicyIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:accesscontextmanager/AccessPolicyIamMemberCondition:AccessPolicyIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSetting:GcpUserAccessBindingScopedAccessSetting": {
            "properties": {
                "activeSettings": {
                    "$ref": "#/types/gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingActiveSettings:GcpUserAccessBindingScopedAccessSettingActiveSettings",
                    "description": "Optional. Access settings for this scoped access settings. This field may be empty if dryRunSettings is set.\nStructure is documented below.\n"
                },
                "dryRunSettings": {
                    "$ref": "#/types/gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingDryRunSettings:GcpUserAccessBindingScopedAccessSettingDryRunSettings",
                    "description": "Optional. Dry-run access settings for this scoped access settings. This field may be empty if activeSettings is set. Cannot contain session settings.\nStructure is documented below.\n"
                },
                "scope": {
                    "$ref": "#/types/gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingScope:GcpUserAccessBindingScopedAccessSettingScope",
                    "description": "Optional. Application, etc. to which the access settings will be applied to. Implicitly, this is the scoped access settings key; as such, it must be unique and non-empty.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingActiveSettings:GcpUserAccessBindingScopedAccessSettingActiveSettings": {
            "properties": {
                "accessLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Access level that a user must have to be granted access. Only one access level is supported, not multiple. This repeated field must have exactly one element. Example: \"accessPolicies/9522/accessLevels/device_trusted\"\n"
                },
                "sessionSettings": {
                    "$ref": "#/types/gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingActiveSettingsSessionSettings:GcpUserAccessBindingScopedAccessSettingActiveSettingsSessionSettings",
                    "description": "Optional. Session settings applied to user access on a given AccessScope.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingActiveSettingsSessionSettings:GcpUserAccessBindingScopedAccessSettingActiveSettingsSessionSettings": {
            "properties": {
                "maxInactivity": {
                    "type": "string",
                    "description": "Optional. How long a user is allowed to take between actions before a new access token must be issued. Only set for Google Cloud apps.\n"
                },
                "sessionLength": {
                    "type": "string",
                    "description": "Optional. The session length. Setting this field to zero is equal to disabling session. Also can set infinite session by flipping the enabled bit to false below. If useOidcMaxAge is true, for OIDC apps, the session length will be the minimum of this field and OIDC\u003cspan pulumi-lang-nodejs=\" maxAge \" pulumi-lang-dotnet=\" MaxAge \" pulumi-lang-go=\" maxAge \" pulumi-lang-python=\" max_age \" pulumi-lang-yaml=\" maxAge \" pulumi-lang-java=\" maxAge \" pulumi-lang-hcl=\" max_age \"\u003e maxAge \u003c/span\u003eparam.\n"
                },
                "sessionLengthEnabled": {
                    "type": "boolean",
                    "description": "Optional. This field enables or disables Google Cloud session length. When false, all fields set above will be disregarded and the session length is basically infinite.\n"
                },
                "sessionReauthMethod": {
                    "type": "string",
                    "description": "Optional. The session challenges proposed to users when the Google Cloud session length is up.\nPossible values are: `LOGIN`, `SECURITY_KEY`, `PASSWORD`.\n"
                },
                "useOidcMaxAge": {
                    "type": "boolean",
                    "description": "Optional. Only useful for OIDC apps. When false, the OIDC\u003cspan pulumi-lang-nodejs=\" maxAge \" pulumi-lang-dotnet=\" MaxAge \" pulumi-lang-go=\" maxAge \" pulumi-lang-python=\" max_age \" pulumi-lang-yaml=\" maxAge \" pulumi-lang-java=\" maxAge \" pulumi-lang-hcl=\" max_age \"\u003e maxAge \u003c/span\u003eparam, if passed in the authentication request will be ignored. When true, the re-auth period will be the minimum of the sessionLength field and the\u003cspan pulumi-lang-nodejs=\" maxAge \" pulumi-lang-dotnet=\" MaxAge \" pulumi-lang-go=\" maxAge \" pulumi-lang-python=\" max_age \" pulumi-lang-yaml=\" maxAge \" pulumi-lang-java=\" maxAge \" pulumi-lang-hcl=\" max_age \"\u003e maxAge \u003c/span\u003eOIDC param.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingDryRunSettings:GcpUserAccessBindingScopedAccessSettingDryRunSettings": {
            "properties": {
                "accessLevels": {
                    "type": "string",
                    "description": "Optional. Access level that a user must have to be granted access. Only one access level is supported, not multiple. This repeated field must have exactly one element. Example: \"accessPolicies/9522/accessLevels/device_trusted\"\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingScope:GcpUserAccessBindingScopedAccessSettingScope": {
            "properties": {
                "clientScope": {
                    "$ref": "#/types/gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingScopeClientScope:GcpUserAccessBindingScopedAccessSettingScopeClientScope",
                    "description": "Optional. Client scope for this access scope.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingScopeClientScope:GcpUserAccessBindingScopedAccessSettingScopeClientScope": {
            "properties": {
                "restrictedClientApplication": {
                    "$ref": "#/types/gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingScopeClientScopeRestrictedClientApplication:GcpUserAccessBindingScopedAccessSettingScopeClientScopeRestrictedClientApplication",
                    "description": "Optional. The application that is subject to this binding's scope. Only one of clientId or name should be specified.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/GcpUserAccessBindingScopedAccessSettingScopeClientScopeRestrictedClientApplication:GcpUserAccessBindingScopedAccessSettingScopeClientScopeRestrictedClientApplication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "The OAuth client ID of the application.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the application. Example: \"Cloud Console\"\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/GcpUserAccessBindingSessionSettings:GcpUserAccessBindingSessionSettings": {
            "properties": {
                "maxInactivity": {
                    "type": "string",
                    "description": "Optional. How long a user is allowed to take between actions before a new access token must be issued. Only set for Google Cloud apps.\n"
                },
                "sessionLength": {
                    "type": "string",
                    "description": "Optional. The session length. Setting this field to zero is equal to disabling session. Also can set infinite session by flipping the enabled bit to false below. If useOidcMaxAge is true, for OIDC apps, the session length will be the minimum of this field and OIDC\u003cspan pulumi-lang-nodejs=\" maxAge \" pulumi-lang-dotnet=\" MaxAge \" pulumi-lang-go=\" maxAge \" pulumi-lang-python=\" max_age \" pulumi-lang-yaml=\" maxAge \" pulumi-lang-java=\" maxAge \" pulumi-lang-hcl=\" max_age \"\u003e maxAge \u003c/span\u003eparam.\n"
                },
                "sessionLengthEnabled": {
                    "type": "boolean",
                    "description": "Optional. This field enables or disables Google Cloud session length. When false, all fields set above will be disregarded and the session length is basically infinite.\n"
                },
                "sessionReauthMethod": {
                    "type": "string",
                    "description": "Optional. The session challenges proposed to users when the Google Cloud session length is up.\nPossible values are: `LOGIN`, `SECURITY_KEY`, `PASSWORD`.\n"
                },
                "useOidcMaxAge": {
                    "type": "boolean",
                    "description": "Optional. Only useful for OIDC apps. When false, the OIDC\u003cspan pulumi-lang-nodejs=\" maxAge \" pulumi-lang-dotnet=\" MaxAge \" pulumi-lang-go=\" maxAge \" pulumi-lang-python=\" max_age \" pulumi-lang-yaml=\" maxAge \" pulumi-lang-java=\" maxAge \" pulumi-lang-hcl=\" max_age \"\u003e maxAge \u003c/span\u003eparam, if passed in the authentication request will be ignored. When true, the re-auth period will be the minimum of the sessionLength field and the\u003cspan pulumi-lang-nodejs=\" maxAge \" pulumi-lang-dotnet=\" MaxAge \" pulumi-lang-go=\" maxAge \" pulumi-lang-python=\" max_age \" pulumi-lang-yaml=\" maxAge \" pulumi-lang-java=\" maxAge \" pulumi-lang-hcl=\" max_age \"\u003e maxAge \u003c/span\u003eOIDC param.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunEgressPolicyEgressFrom:ServicePerimeterDryRunEgressPolicyEgressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Identities can be an individual user, service account, Google group,\nor third-party identity. For third-party identity, only single identities\nare supported and other identity types are not supported.The v1 identities\nthat have the prefix user, group and serviceAccount in\nhttps://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.\n",
                    "willReplaceOnChanges": true
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access to outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will\nbe allowed access.\nPossible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n",
                    "willReplaceOnChanges": true
                },
                "sourceRestriction": {
                    "type": "string",
                    "description": "Whether to enforce traffic restrictions based on \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field. If the \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.\nPossible values are: `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.\n",
                    "willReplaceOnChanges": true
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterDryRunEgressPolicyEgressFromSource:ServicePerimeterDryRunEgressPolicyEgressFromSource"
                    },
                    "description": "Sources that this EgressPolicy authorizes access from.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunEgressPolicyEgressFromSource:ServicePerimeterDryRunEgressPolicyEgressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n",
                    "willReplaceOnChanges": true
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunEgressPolicyEgressTo:ServicePerimeterDryRunEgressPolicyEgressTo": {
            "properties": {
                "externalResources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.\n",
                    "willReplaceOnChanges": true
                },
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterDryRunEgressPolicyEgressToOperation:ServicePerimeterDryRunEgressPolicyEgressToOperation"
                    },
                    "description": "A list of `ApiOperations` that this egress rule applies to. A request matches\nif it contains an operation/service in this list.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, that match this to stanza. A request matches\nif it contains a resource in this list. If * is specified for resources,\nthen this `EgressTo` rule will authorize access to all resources outside\nthe perimeter.\n",
                    "willReplaceOnChanges": true
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `EgressFrom`\nare allowed to perform.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunEgressPolicyEgressToOperation:ServicePerimeterDryRunEgressPolicyEgressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector:ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector:ServicePerimeterDryRunEgressPolicyEgressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n",
                    "willReplaceOnChanges": true
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunIngressPolicyIngressFrom:ServicePerimeterDryRunIngressPolicyIngressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Identities can be an individual user, service account, Google group,\nor third-party identity. For third-party identity, only single identities\nare supported and other identity types are not supported.The v1 identities\nthat have the prefix user, group and serviceAccount in\nhttps://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.\n",
                    "willReplaceOnChanges": true
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access from outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will be\nallowed access.\nPossible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n",
                    "willReplaceOnChanges": true
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterDryRunIngressPolicyIngressFromSource:ServicePerimeterDryRunIngressPolicyIngressFromSource"
                    },
                    "description": "Sources that this `IngressPolicy` authorizes access from.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunIngressPolicyIngressFromSource:ServicePerimeterDryRunIngressPolicyIngressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An `AccessLevel` resource name that allow resources within the\n`ServicePerimeters` to be accessed from the internet. `AccessLevels` listed\nmust be in the same policy as this `ServicePerimeter`. Referencing a nonexistent\n`AccessLevel` will cause an error. If no `AccessLevel` names are listed,\nresources within the perimeter can only be accessed via Google Cloud calls\nwith request origins within the perimeter.\nExample `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`\nIf * is specified, then all IngressSources will be allowed.\n",
                    "willReplaceOnChanges": true
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to ingress the perimeter.\nRequests from these resources will be allowed to access perimeter data.\nCurrently only projects are allowed. Format `projects/{project_number}`\nThe project may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the case\nof allowing all Google Cloud resources only is not supported.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunIngressPolicyIngressTo:ServicePerimeterDryRunIngressPolicyIngressTo": {
            "properties": {
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterDryRunIngressPolicyIngressToOperation:ServicePerimeterDryRunIngressPolicyIngressToOperation"
                    },
                    "description": "A list of `ApiOperations` the sources specified in corresponding `IngressFrom`\nare allowed to perform in this `ServicePerimeter`.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, protected by this `ServicePerimeter`\nthat are allowed to be accessed by sources defined in the\ncorresponding `IngressFrom`. A request matches if it contains\na resource in this list. If `*` is specified for resources,\nthen this `IngressTo` rule will authorize access to all\nresources inside the perimeter, provided that the request\nalso matches the \u003cspan pulumi-lang-nodejs=\"`operations`\" pulumi-lang-dotnet=\"`Operations`\" pulumi-lang-go=\"`operations`\" pulumi-lang-python=\"`operations`\" pulumi-lang-yaml=\"`operations`\" pulumi-lang-java=\"`operations`\" pulumi-lang-hcl=\"`operations`\"\u003e`operations`\u003c/span\u003e field.\n",
                    "willReplaceOnChanges": true
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `IngressFrom`\nare allowed to perform.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunIngressPolicyIngressToOperation:ServicePerimeterDryRunIngressPolicyIngressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector:ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong to\nthe service specified by serviceName field. A single `MethodSelector` entry\nwith `*` specified for the method field will allow all methods AND\npermissions for the service specified in `serviceName`.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`\nfield set to `*` will allow all methods AND permissions for all services.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector:ServicePerimeterDryRunIngressPolicyIngressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for method should be a valid method name for the corresponding\nserviceName in `ApiOperation`. If `*` used as value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e, then\nALL methods and permissions are allowed.\n",
                    "willReplaceOnChanges": true
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterEgressPolicyEgressFrom:ServicePerimeterEgressPolicyEgressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Identities can be an individual user, service account, Google group,\nor third-party identity. For third-party identity, only single identities\nare supported and other identity types are not supported.The v1 identities\nthat have the prefix user, group and serviceAccount in\nhttps://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access to outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will\nbe allowed access.\nPossible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sourceRestriction": {
                    "type": "string",
                    "description": "Whether to enforce traffic restrictions based on \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field. If the \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.\nPossible values are: `SOURCE_RESTRICTION_UNSPECIFIED`, `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterEgressPolicyEgressFromSource:ServicePerimeterEgressPolicyEgressFromSource"
                    },
                    "description": "Sources that this EgressPolicy authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterEgressPolicyEgressFromSource:ServicePerimeterEgressPolicyEgressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterEgressPolicyEgressTo:ServicePerimeterEgressPolicyEgressTo": {
            "properties": {
                "externalResources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.\n"
                },
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterEgressPolicyEgressToOperation:ServicePerimeterEgressPolicyEgressToOperation"
                    },
                    "description": "A list of `ApiOperations` that this egress rule applies to. A request matches\nif it contains an operation/service in this list.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, that match this to stanza. A request matches\nif it contains a resource in this list. If * is specified for resources,\nthen this `EgressTo` rule will authorize access to all resources outside\nthe perimeter.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `EgressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterEgressPolicyEgressToOperation:ServicePerimeterEgressPolicyEgressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterEgressPolicyEgressToOperationMethodSelector:ServicePerimeterEgressPolicyEgressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterEgressPolicyEgressToOperationMethodSelector:ServicePerimeterEgressPolicyEgressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterIngressPolicyIngressFrom:ServicePerimeterIngressPolicyIngressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Identities can be an individual user, service account, Google group,\nor third-party identity. For third-party identity, only single identities\nare supported and other identity types are not supported.The v1 identities\nthat have the prefix user, group and serviceAccount in\nhttps://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access from outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will be\nallowed access.\nPossible values are: `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterIngressPolicyIngressFromSource:ServicePerimeterIngressPolicyIngressFromSource"
                    },
                    "description": "Sources that this `IngressPolicy` authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterIngressPolicyIngressFromSource:ServicePerimeterIngressPolicyIngressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An `AccessLevel` resource name that allow resources within the\n`ServicePerimeters` to be accessed from the internet. `AccessLevels` listed\nmust be in the same policy as this `ServicePerimeter`. Referencing a nonexistent\n`AccessLevel` will cause an error. If no `AccessLevel` names are listed,\nresources within the perimeter can only be accessed via Google Cloud calls\nwith request origins within the perimeter.\nExample `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.`\nIf * is specified, then all IngressSources will be allowed.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to ingress the perimeter.\nRequests from these resources will be allowed to access perimeter data.\nCurrently only projects and VPCs are allowed.\nProject format: `projects/{projectNumber}`\nVPC network format:\n`//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NAME}`.\nThe project may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the case\nof allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterIngressPolicyIngressTo:ServicePerimeterIngressPolicyIngressTo": {
            "properties": {
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterIngressPolicyIngressToOperation:ServicePerimeterIngressPolicyIngressToOperation"
                    },
                    "description": "A list of `ApiOperations` the sources specified in corresponding `IngressFrom`\nare allowed to perform in this `ServicePerimeter`.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, protected by this `ServicePerimeter`\nthat are allowed to be accessed by sources defined in the\ncorresponding `IngressFrom`. A request matches if it contains\na resource in this list. If `*` is specified for resources,\nthen this `IngressTo` rule will authorize access to all\nresources inside the perimeter, provided that the request\nalso matches the \u003cspan pulumi-lang-nodejs=\"`operations`\" pulumi-lang-dotnet=\"`Operations`\" pulumi-lang-go=\"`operations`\" pulumi-lang-python=\"`operations`\" pulumi-lang-yaml=\"`operations`\" pulumi-lang-java=\"`operations`\" pulumi-lang-hcl=\"`operations`\"\u003e`operations`\u003c/span\u003e field.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `IngressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterIngressPolicyIngressToOperation:ServicePerimeterIngressPolicyIngressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterIngressPolicyIngressToOperationMethodSelector:ServicePerimeterIngressPolicyIngressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong to\nthe service specified by serviceName field. A single `MethodSelector` entry\nwith `*` specified for the method field will allow all methods AND\npermissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with `serviceName`\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterIngressPolicyIngressToOperationMethodSelector:ServicePerimeterIngressPolicyIngressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for method should be a valid method name for the corresponding\nserviceName in `ApiOperation`. If `*` used as value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e, then\nALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpec:ServicePerimeterSpec": {
            "properties": {
                "accessLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet.\nAccessLevels listed must be in the same policy as this\nServicePerimeter. Referencing a nonexistent AccessLevel is a\nsyntax error. If no AccessLevel names are listed, resources within\nthe perimeter can only be accessed via GCP calls with request\norigins within the perimeter. For Service Perimeter Bridge, must\nbe empty.\nFormat: accessPolicies/{policy_id}/accessLevels/{access_level_name}\n"
                },
                "egressPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicy:ServicePerimeterSpecEgressPolicy"
                    },
                    "description": "List of EgressPolicies to apply to the perimeter. A perimeter may\nhave multiple EgressPolicies, each of which is evaluated separately.\nAccess is granted if any EgressPolicy grants it. Must be empty for\na perimeter bridge.\nStructure is documented below.\n"
                },
                "ingressPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicy:ServicePerimeterSpecIngressPolicy"
                    },
                    "description": "List of `IngressPolicies` to apply to the perimeter. A perimeter may\nhave multiple `IngressPolicies`, each of which is evaluated\nseparately. Access is granted if any `Ingress Policy` grants it.\nMust be empty for a perimeter bridge.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}\n"
                },
                "restrictedServices": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n`storage.googleapis.com` is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.\n"
                },
                "vpcAccessibleServices": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecVpcAccessibleServices:ServicePerimeterSpecVpcAccessibleServices",
                    "description": "Specifies how APIs are allowed to communicate within the Service\nPerimeter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicy:ServicePerimeterSpecEgressPolicy": {
            "properties": {
                "egressFrom": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressFrom:ServicePerimeterSpecEgressPolicyEgressFrom",
                    "description": "Defines conditions on the source of a request causing this `EgressPolicy` to apply.\nStructure is documented below.\n"
                },
                "egressTo": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressTo:ServicePerimeterSpecEgressPolicyEgressTo",
                    "description": "Defines the conditions on the `ApiOperation` and destination resources that\ncause this `EgressPolicy` to apply.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the perimeter. Does not affect behavior.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressFrom:ServicePerimeterSpecEgressPolicyEgressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of identities that are allowed access through this `EgressPolicy`.\nShould be in the format of email address. The email address should\nrepresent individual user or service account only.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access to outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will\nbe allowed access.\nPossible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sourceRestriction": {
                    "type": "string",
                    "description": "Whether to enforce traffic restrictions based on \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field. If the \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.\nPossible values are: `SOURCE_RESTRICTION_UNSPECIFIED`, `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressFromSource:ServicePerimeterSpecEgressPolicyEgressFromSource"
                    },
                    "description": "Sources that this EgressPolicy authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressFromSource:ServicePerimeterSpecEgressPolicyEgressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressTo:ServicePerimeterSpecEgressPolicyEgressTo": {
            "properties": {
                "externalResources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.\n"
                },
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressToOperation:ServicePerimeterSpecEgressPolicyEgressToOperation"
                    },
                    "description": "A list of `ApiOperations` that this egress rule applies to. A request matches\nif it contains an operation/service in this list.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, that match this to stanza. A request matches\nif it contains a resource in this list. If * is specified for resources,\nthen this `EgressTo` rule will authorize access to all resources outside\nthe perimeter.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `EgressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressToOperation:ServicePerimeterSpecEgressPolicyEgressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector:ServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector:ServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicy:ServicePerimeterSpecIngressPolicy": {
            "properties": {
                "ingressFrom": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressFrom:ServicePerimeterSpecIngressPolicyIngressFrom",
                    "description": "Defines the conditions on the source of a request causing this `IngressPolicy`\nto apply.\nStructure is documented below.\n"
                },
                "ingressTo": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressTo:ServicePerimeterSpecIngressPolicyIngressTo",
                    "description": "Defines the conditions on the `ApiOperation` and request destination that cause\nthis `IngressPolicy` to apply.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the perimeter. Does not affect behavior.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressFrom:ServicePerimeterSpecIngressPolicyIngressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of identities that are allowed access through this ingress policy.\nShould be in the format of email address. The email address should represent\nindividual user or service account only.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access from outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will be\nallowed access.\nPossible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressFromSource:ServicePerimeterSpecIngressPolicyIngressFromSource"
                    },
                    "description": "Sources that this `IngressPolicy` authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressFromSource:ServicePerimeterSpecIngressPolicyIngressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressTo:ServicePerimeterSpecIngressPolicyIngressTo": {
            "properties": {
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressToOperation:ServicePerimeterSpecIngressPolicyIngressToOperation"
                    },
                    "description": "A list of `ApiOperations` the sources specified in corresponding `IngressFrom`\nare allowed to perform in this `ServicePerimeter`.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, protected by this `ServicePerimeter`\nthat are allowed to be accessed by sources defined in the\ncorresponding `IngressFrom`. A request matches if it contains\na resource in this list. If `*` is specified for resources,\nthen this `IngressTo` rule will authorize access to all\nresources inside the perimeter, provided that the request\nalso matches the \u003cspan pulumi-lang-nodejs=\"`operations`\" pulumi-lang-dotnet=\"`Operations`\" pulumi-lang-go=\"`operations`\" pulumi-lang-python=\"`operations`\" pulumi-lang-yaml=\"`operations`\" pulumi-lang-java=\"`operations`\" pulumi-lang-hcl=\"`operations`\"\u003e`operations`\u003c/span\u003e field.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `IngressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressToOperation:ServicePerimeterSpecIngressPolicyIngressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressToOperationMethodSelector:ServicePerimeterSpecIngressPolicyIngressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecIngressPolicyIngressToOperationMethodSelector:ServicePerimeterSpecIngressPolicyIngressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterSpecVpcAccessibleServices:ServicePerimeterSpecVpcAccessibleServices": {
            "properties": {
                "allowedServices": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of APIs usable within the Service Perimeter.\nMust be empty unless `enableRestriction` is True.\n"
                },
                "enableRestriction": {
                    "type": "boolean",
                    "description": "Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatus:ServicePerimeterStatus": {
            "properties": {
                "accessLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet.\nAccessLevels listed must be in the same policy as this\nServicePerimeter. Referencing a nonexistent AccessLevel is a\nsyntax error. If no AccessLevel names are listed, resources within\nthe perimeter can only be accessed via GCP calls with request\norigins within the perimeter. For Service Perimeter Bridge, must\nbe empty.\nFormat: accessPolicies/{policy_id}/accessLevels/{access_level_name}\n"
                },
                "egressPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicy:ServicePerimeterStatusEgressPolicy"
                    },
                    "description": "List of EgressPolicies to apply to the perimeter. A perimeter may\nhave multiple EgressPolicies, each of which is evaluated separately.\nAccess is granted if any EgressPolicy grants it. Must be empty for\na perimeter bridge.\nStructure is documented below.\n"
                },
                "ingressPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicy:ServicePerimeterStatusIngressPolicy"
                    },
                    "description": "List of `IngressPolicies` to apply to the perimeter. A perimeter may\nhave multiple `IngressPolicies`, each of which is evaluated\nseparately. Access is granted if any `Ingress Policy` grants it.\nMust be empty for a perimeter bridge.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}\n"
                },
                "restrictedServices": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n`storage.googleapis.com` is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.\n"
                },
                "vpcAccessibleServices": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusVpcAccessibleServices:ServicePerimeterStatusVpcAccessibleServices",
                    "description": "Specifies how APIs are allowed to communicate within the Service\nPerimeter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicy:ServicePerimeterStatusEgressPolicy": {
            "properties": {
                "egressFrom": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressFrom:ServicePerimeterStatusEgressPolicyEgressFrom",
                    "description": "Defines conditions on the source of a request causing this `EgressPolicy` to apply.\nStructure is documented below.\n"
                },
                "egressTo": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressTo:ServicePerimeterStatusEgressPolicyEgressTo",
                    "description": "Defines the conditions on the `ApiOperation` and destination resources that\ncause this `EgressPolicy` to apply.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the perimeter. Does not affect behavior.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressFrom:ServicePerimeterStatusEgressPolicyEgressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of identities that are allowed access through this `EgressPolicy`.\nShould be in the format of email address. The email address should\nrepresent individual user or service account only.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access to outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will\nbe allowed access.\nPossible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sourceRestriction": {
                    "type": "string",
                    "description": "Whether to enforce traffic restrictions based on \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field. If the \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.\nPossible values are: `SOURCE_RESTRICTION_UNSPECIFIED`, `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressFromSource:ServicePerimeterStatusEgressPolicyEgressFromSource"
                    },
                    "description": "Sources that this EgressPolicy authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressFromSource:ServicePerimeterStatusEgressPolicyEgressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressTo:ServicePerimeterStatusEgressPolicyEgressTo": {
            "properties": {
                "externalResources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.\n"
                },
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressToOperation:ServicePerimeterStatusEgressPolicyEgressToOperation"
                    },
                    "description": "A list of `ApiOperations` that this egress rule applies to. A request matches\nif it contains an operation/service in this list.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, that match this to stanza. A request matches\nif it contains a resource in this list. If * is specified for resources,\nthen this `EgressTo` rule will authorize access to all resources outside\nthe perimeter.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `EgressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressToOperation:ServicePerimeterStatusEgressPolicyEgressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressToOperationMethodSelector:ServicePerimeterStatusEgressPolicyEgressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusEgressPolicyEgressToOperationMethodSelector:ServicePerimeterStatusEgressPolicyEgressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicy:ServicePerimeterStatusIngressPolicy": {
            "properties": {
                "ingressFrom": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressFrom:ServicePerimeterStatusIngressPolicyIngressFrom",
                    "description": "Defines the conditions on the source of a request causing this `IngressPolicy`\nto apply.\nStructure is documented below.\n"
                },
                "ingressTo": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressTo:ServicePerimeterStatusIngressPolicyIngressTo",
                    "description": "Defines the conditions on the `ApiOperation` and request destination that cause\nthis `IngressPolicy` to apply.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the perimeter. Does not affect behavior.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressFrom:ServicePerimeterStatusIngressPolicyIngressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of identities that are allowed access through this ingress policy.\nShould be in the format of email address. The email address should represent\nindividual user or service account only.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access from outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will be\nallowed access.\nPossible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressFromSource:ServicePerimeterStatusIngressPolicyIngressFromSource"
                    },
                    "description": "Sources that this `IngressPolicy` authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressFromSource:ServicePerimeterStatusIngressPolicyIngressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressTo:ServicePerimeterStatusIngressPolicyIngressTo": {
            "properties": {
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressToOperation:ServicePerimeterStatusIngressPolicyIngressToOperation"
                    },
                    "description": "A list of `ApiOperations` the sources specified in corresponding `IngressFrom`\nare allowed to perform in this `ServicePerimeter`.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, protected by this `ServicePerimeter`\nthat are allowed to be accessed by sources defined in the\ncorresponding `IngressFrom`. A request matches if it contains\na resource in this list. If `*` is specified for resources,\nthen this `IngressTo` rule will authorize access to all\nresources inside the perimeter, provided that the request\nalso matches the \u003cspan pulumi-lang-nodejs=\"`operations`\" pulumi-lang-dotnet=\"`Operations`\" pulumi-lang-go=\"`operations`\" pulumi-lang-python=\"`operations`\" pulumi-lang-yaml=\"`operations`\" pulumi-lang-java=\"`operations`\" pulumi-lang-hcl=\"`operations`\"\u003e`operations`\u003c/span\u003e field.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `IngressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressToOperation:ServicePerimeterStatusIngressPolicyIngressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelector:ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelector:ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimeterStatusVpcAccessibleServices:ServicePerimeterStatusVpcAccessibleServices": {
            "properties": {
                "allowedServices": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of APIs usable within the Service Perimeter.\nMust be empty unless `enableRestriction` is True.\n"
                },
                "enableRestriction": {
                    "type": "boolean",
                    "description": "Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeter:ServicePerimetersServicePerimeter": {
            "properties": {
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTime the AccessPolicy was created in UTC.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the ServicePerimeter and its use. Does not affect\nbehavior.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Resource name for the ServicePerimeter. The\u003cspan pulumi-lang-nodejs=\" shortName \" pulumi-lang-dotnet=\" ShortName \" pulumi-lang-go=\" shortName \" pulumi-lang-python=\" short_name \" pulumi-lang-yaml=\" shortName \" pulumi-lang-java=\" shortName \" pulumi-lang-hcl=\" short_name \"\u003e shortName \u003c/span\u003ecomponent must\nbegin with a letter and only include alphanumeric and '_'.\nFormat: accessPolicies/{policy_id}/servicePerimeters/{short_name}\n",
                    "willReplaceOnChanges": true
                },
                "perimeterType": {
                    "type": "string",
                    "description": "Specifies the type of the Perimeter. There are two types: regular and\nbridge. Regular Service Perimeter contains resources, access levels,\nand restricted services. Every resource can be in at most\nONE regular Service Perimeter.\nIn addition to being in a regular service perimeter, a resource can also\nbe in zero or more perimeter bridges. A perimeter bridge only contains\nresources. Cross project operations are permitted if all effected\nresources share some perimeter (whether bridge or regular). Perimeter\nBridge does not contain access levels or services: those are governed\nentirely by the regular perimeter that resource is in.\nPerimeter Bridges are typically useful when building more complex\ntopologies with many independent perimeters that need to share some data\nwith a common perimeter, but should not be able to share data among\nthemselves.\nDefault value is `PERIMETER_TYPE_REGULAR`.\nPossible values are: `PERIMETER_TYPE_REGULAR`, `PERIMETER_TYPE_BRIDGE`.\n",
                    "willReplaceOnChanges": true
                },
                "spec": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpec:ServicePerimetersServicePerimeterSpec",
                    "description": "Proposed (or dry run) ServicePerimeter configuration.\nThis configuration allows to specify and test ServicePerimeter configuration\nwithout enforcing actual access restrictions. Only allowed to be set when\nthe `useExplicitDryRunSpec` flag is set.\nStructure is documented below.\n"
                },
                "status": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatus:ServicePerimetersServicePerimeterStatus",
                    "description": "ServicePerimeter configuration. Specifies sets of resources,\nrestricted services and access levels that determine\nperimeter content and boundaries.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the Policy.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "(Output)\nTime the AccessPolicy was updated in UTC.\n"
                },
                "useExplicitDryRunSpec": {
                    "type": "boolean",
                    "description": "Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists\nfor all Service Perimeters, and that spec is identical to the status for those\nService Perimeters. When this flag is set, it inhibits the generation of the\nimplicit spec, thereby allowing the user to explicitly provide a\nconfiguration (\"spec\") to use in a dry-run version of the Service Perimeter.\nThis allows the user to test changes to the enforced config (\"status\") without\nactually enforcing them. This testing is done through analyzing the differences\nbetween currently enforced and suggested restrictions. useExplicitDryRunSpec must\nbet set to True if any of the fields in the spec are set to non-default values.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "title"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createTime",
                        "name",
                        "title",
                        "updateTime"
                    ]
                }
            }
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpec:ServicePerimetersServicePerimeterSpec": {
            "properties": {
                "accessLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet.\nAccessLevels listed must be in the same policy as this\nServicePerimeter. Referencing a nonexistent AccessLevel is a\nsyntax error. If no AccessLevel names are listed, resources within\nthe perimeter can only be accessed via GCP calls with request\norigins within the perimeter. For Service Perimeter Bridge, must\nbe empty.\nFormat: accessPolicies/{policy_id}/accessLevels/{access_level_name}\n"
                },
                "egressPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicy:ServicePerimetersServicePerimeterSpecEgressPolicy"
                    },
                    "description": "List of EgressPolicies to apply to the perimeter. A perimeter may\nhave multiple EgressPolicies, each of which is evaluated separately.\nAccess is granted if any EgressPolicy grants it. Must be empty for\na perimeter bridge.\nStructure is documented below.\n"
                },
                "ingressPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicy:ServicePerimetersServicePerimeterSpecIngressPolicy"
                    },
                    "description": "List of `IngressPolicies` to apply to the perimeter. A perimeter may\nhave multiple `IngressPolicies`, each of which is evaluated\nseparately. Access is granted if any `Ingress Policy` grants it.\nMust be empty for a perimeter bridge.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}\n"
                },
                "restrictedServices": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n`storage.googleapis.com` is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.\n"
                },
                "vpcAccessibleServices": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecVpcAccessibleServices:ServicePerimetersServicePerimeterSpecVpcAccessibleServices",
                    "description": "Specifies how APIs are allowed to communicate within the Service\nPerimeter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicy:ServicePerimetersServicePerimeterSpecEgressPolicy": {
            "properties": {
                "egressFrom": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressFrom:ServicePerimetersServicePerimeterSpecEgressPolicyEgressFrom",
                    "description": "Defines conditions on the source of a request causing this `EgressPolicy` to apply.\nStructure is documented below.\n"
                },
                "egressTo": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressTo:ServicePerimetersServicePerimeterSpecEgressPolicyEgressTo",
                    "description": "Defines the conditions on the `ApiOperation` and destination resources that\ncause this `EgressPolicy` to apply.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the perimeter. Does not affect behavior.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressFrom:ServicePerimetersServicePerimeterSpecEgressPolicyEgressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Identities can be an individual user, service account, Google group,\nor third-party identity. For third-party identity, only single identities\nare supported and other identity types are not supported.The v1 identities\nthat have the prefix user, group and serviceAccount in\nhttps://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access to outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will\nbe allowed access.\nPossible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sourceRestriction": {
                    "type": "string",
                    "description": "Whether to enforce traffic restrictions based on \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field. If the \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.\nPossible values are: `SOURCE_RESTRICTION_UNSPECIFIED`, `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressFromSource:ServicePerimetersServicePerimeterSpecEgressPolicyEgressFromSource"
                    },
                    "description": "Sources that this EgressPolicy authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressFromSource:ServicePerimetersServicePerimeterSpecEgressPolicyEgressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressTo:ServicePerimetersServicePerimeterSpecEgressPolicyEgressTo": {
            "properties": {
                "externalResources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.\n"
                },
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressToOperation:ServicePerimetersServicePerimeterSpecEgressPolicyEgressToOperation"
                    },
                    "description": "A list of `ApiOperations` that this egress rule applies to. A request matches\nif it contains an operation/service in this list.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, that match this to stanza. A request matches\nif it contains a resource in this list. If * is specified for resources,\nthen this `EgressTo` rule will authorize access to all resources outside\nthe perimeter.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `EgressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressToOperation:ServicePerimetersServicePerimeterSpecEgressPolicyEgressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector:ServicePerimetersServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector:ServicePerimetersServicePerimeterSpecEgressPolicyEgressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicy:ServicePerimetersServicePerimeterSpecIngressPolicy": {
            "properties": {
                "ingressFrom": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressFrom:ServicePerimetersServicePerimeterSpecIngressPolicyIngressFrom",
                    "description": "Defines the conditions on the source of a request causing this `IngressPolicy`\nto apply.\nStructure is documented below.\n"
                },
                "ingressTo": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressTo:ServicePerimetersServicePerimeterSpecIngressPolicyIngressTo",
                    "description": "Defines the conditions on the `ApiOperation` and request destination that cause\nthis `IngressPolicy` to apply.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the perimeter. Does not affect behavior.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressFrom:ServicePerimetersServicePerimeterSpecIngressPolicyIngressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of identities that are allowed access through this ingress policy.\nShould be in the format of email address. The email address should represent\nindividual user or service account only.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access from outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will be\nallowed access.\nPossible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressFromSource:ServicePerimetersServicePerimeterSpecIngressPolicyIngressFromSource"
                    },
                    "description": "Sources that this `IngressPolicy` authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressFromSource:ServicePerimetersServicePerimeterSpecIngressPolicyIngressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressTo:ServicePerimetersServicePerimeterSpecIngressPolicyIngressTo": {
            "properties": {
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressToOperation:ServicePerimetersServicePerimeterSpecIngressPolicyIngressToOperation"
                    },
                    "description": "A list of `ApiOperations` the sources specified in corresponding `IngressFrom`\nare allowed to perform in this `ServicePerimeter`.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, protected by this `ServicePerimeter`\nthat are allowed to be accessed by sources defined in the\ncorresponding `IngressFrom`. A request matches if it contains\na resource in this list. If `*` is specified for resources,\nthen this `IngressTo` rule will authorize access to all\nresources inside the perimeter, provided that the request\nalso matches the \u003cspan pulumi-lang-nodejs=\"`operations`\" pulumi-lang-dotnet=\"`Operations`\" pulumi-lang-go=\"`operations`\" pulumi-lang-python=\"`operations`\" pulumi-lang-yaml=\"`operations`\" pulumi-lang-java=\"`operations`\" pulumi-lang-hcl=\"`operations`\"\u003e`operations`\u003c/span\u003e field.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `IngressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressToOperation:ServicePerimetersServicePerimeterSpecIngressPolicyIngressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressToOperationMethodSelector:ServicePerimetersServicePerimeterSpecIngressPolicyIngressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecIngressPolicyIngressToOperationMethodSelector:ServicePerimetersServicePerimeterSpecIngressPolicyIngressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterSpecVpcAccessibleServices:ServicePerimetersServicePerimeterSpecVpcAccessibleServices": {
            "properties": {
                "allowedServices": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of APIs usable within the Service Perimeter.\nMust be empty unless `enableRestriction` is True.\n"
                },
                "enableRestriction": {
                    "type": "boolean",
                    "description": "Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatus:ServicePerimetersServicePerimeterStatus": {
            "properties": {
                "accessLevels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet.\nAccessLevels listed must be in the same policy as this\nServicePerimeter. Referencing a nonexistent AccessLevel is a\nsyntax error. If no AccessLevel names are listed, resources within\nthe perimeter can only be accessed via GCP calls with request\norigins within the perimeter. For Service Perimeter Bridge, must\nbe empty.\nFormat: accessPolicies/{policy_id}/accessLevels/{access_level_name}\n"
                },
                "egressPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicy:ServicePerimetersServicePerimeterStatusEgressPolicy"
                    },
                    "description": "List of EgressPolicies to apply to the perimeter. A perimeter may\nhave multiple EgressPolicies, each of which is evaluated separately.\nAccess is granted if any EgressPolicy grants it. Must be empty for\na perimeter bridge.\nStructure is documented below.\n"
                },
                "ingressPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicy:ServicePerimetersServicePerimeterStatusIngressPolicy"
                    },
                    "description": "List of `IngressPolicies` to apply to the perimeter. A perimeter may\nhave multiple `IngressPolicies`, each of which is evaluated\nseparately. Access is granted if any `Ingress Policy` grants it.\nMust be empty for a perimeter bridge.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}\n"
                },
                "restrictedServices": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n`storage.googleapis.com` is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.\n"
                },
                "vpcAccessibleServices": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusVpcAccessibleServices:ServicePerimetersServicePerimeterStatusVpcAccessibleServices",
                    "description": "Specifies how APIs are allowed to communicate within the Service\nPerimeter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicy:ServicePerimetersServicePerimeterStatusEgressPolicy": {
            "properties": {
                "egressFrom": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressFrom:ServicePerimetersServicePerimeterStatusEgressPolicyEgressFrom",
                    "description": "Defines conditions on the source of a request causing this `EgressPolicy` to apply.\nStructure is documented below.\n"
                },
                "egressTo": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressTo:ServicePerimetersServicePerimeterStatusEgressPolicyEgressTo",
                    "description": "Defines the conditions on the `ApiOperation` and destination resources that\ncause this `EgressPolicy` to apply.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the perimeter. Does not affect behavior.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressFrom:ServicePerimetersServicePerimeterStatusEgressPolicyEgressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Identities can be an individual user, service account, Google group,\nor third-party identity. For third-party identity, only single identities\nare supported and other identity types are not supported.The v1 identities\nthat have the prefix user, group and serviceAccount in\nhttps://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access to outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will\nbe allowed access.\nPossible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sourceRestriction": {
                    "type": "string",
                    "description": "Whether to enforce traffic restrictions based on \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field. If the \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\" pulumi-lang-hcl=\"`sources`\"\u003e`sources`\u003c/span\u003e field is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.\nPossible values are: `SOURCE_RESTRICTION_UNSPECIFIED`, `SOURCE_RESTRICTION_ENABLED`, `SOURCE_RESTRICTION_DISABLED`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressFromSource:ServicePerimetersServicePerimeterStatusEgressPolicyEgressFromSource"
                    },
                    "description": "Sources that this EgressPolicy authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressFromSource:ServicePerimetersServicePerimeterStatusEgressPolicyEgressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressTo:ServicePerimetersServicePerimeterStatusEgressPolicyEgressTo": {
            "properties": {
                "externalResources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of external resources that are allowed to be accessed. A request\nmatches if it contains an external resource in this list (Example:\ns3://bucket/path). Currently '*' is not allowed.\n"
                },
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressToOperation:ServicePerimetersServicePerimeterStatusEgressPolicyEgressToOperation"
                    },
                    "description": "A list of `ApiOperations` that this egress rule applies to. A request matches\nif it contains an operation/service in this list.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, that match this to stanza. A request matches\nif it contains a resource in this list. If * is specified for resources,\nthen this `EgressTo` rule will authorize access to all resources outside\nthe perimeter.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `EgressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressToOperation:ServicePerimetersServicePerimeterStatusEgressPolicyEgressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressToOperationMethodSelector:ServicePerimetersServicePerimeterStatusEgressPolicyEgressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusEgressPolicyEgressToOperationMethodSelector:ServicePerimetersServicePerimeterStatusEgressPolicyEgressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicy:ServicePerimetersServicePerimeterStatusIngressPolicy": {
            "properties": {
                "ingressFrom": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressFrom:ServicePerimetersServicePerimeterStatusIngressPolicyIngressFrom",
                    "description": "Defines the conditions on the source of a request causing this `IngressPolicy`\nto apply.\nStructure is documented below.\n"
                },
                "ingressTo": {
                    "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressTo:ServicePerimetersServicePerimeterStatusIngressPolicyIngressTo",
                    "description": "Defines the conditions on the `ApiOperation` and request destination that cause\nthis `IngressPolicy` to apply.\nStructure is documented below.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Human readable title. Must be unique within the perimeter. Does not affect behavior.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressFrom:ServicePerimetersServicePerimeterStatusIngressPolicyIngressFrom": {
            "properties": {
                "identities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of identities that are allowed access through this ingress policy.\nShould be in the format of email address. The email address should represent\nindividual user or service account only.\n"
                },
                "identityType": {
                    "type": "string",
                    "description": "Specifies the type of identities that are allowed access from outside the\nperimeter. If left unspecified, then members of \u003cspan pulumi-lang-nodejs=\"`identities`\" pulumi-lang-dotnet=\"`Identities`\" pulumi-lang-go=\"`identities`\" pulumi-lang-python=\"`identities`\" pulumi-lang-yaml=\"`identities`\" pulumi-lang-java=\"`identities`\" pulumi-lang-hcl=\"`identities`\"\u003e`identities`\u003c/span\u003e field will be\nallowed access.\nPossible values are: `IDENTITY_TYPE_UNSPECIFIED`, `ANY_IDENTITY`, `ANY_USER_ACCOUNT`, `ANY_SERVICE_ACCOUNT`.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressFromSource:ServicePerimetersServicePerimeterStatusIngressPolicyIngressFromSource"
                    },
                    "description": "Sources that this `IngressPolicy` authorizes access from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressFromSource:ServicePerimetersServicePerimeterStatusIngressPolicyIngressFromSource": {
            "properties": {
                "accessLevel": {
                    "type": "string",
                    "description": "An AccessLevel resource name that allows resources outside the ServicePerimeter to be accessed from the inside.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "A Google Cloud resource that is allowed to egress the perimeter.\nRequests from these resources are allowed to access data outside the perimeter.\nCurrently only projects are allowed. Project format: `projects/{project_number}`.\nThe resource may be in any Google Cloud organization, not just the\norganization that the perimeter is defined in. `*` is not allowed, the\ncase of allowing all Google Cloud resources only is not supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressTo:ServicePerimetersServicePerimeterStatusIngressPolicyIngressTo": {
            "properties": {
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressToOperation:ServicePerimetersServicePerimeterStatusIngressPolicyIngressToOperation"
                    },
                    "description": "A list of `ApiOperations` the sources specified in corresponding `IngressFrom`\nare allowed to perform in this `ServicePerimeter`.\nStructure is documented below.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of resources, currently only projects in the form\n`projects/\u003cprojectnumber\u003e`, protected by this `ServicePerimeter`\nthat are allowed to be accessed by sources defined in the\ncorresponding `IngressFrom`. A request matches if it contains\na resource in this list. If `*` is specified for resources,\nthen this `IngressTo` rule will authorize access to all\nresources inside the perimeter, provided that the request\nalso matches the \u003cspan pulumi-lang-nodejs=\"`operations`\" pulumi-lang-dotnet=\"`Operations`\" pulumi-lang-go=\"`operations`\" pulumi-lang-python=\"`operations`\" pulumi-lang-yaml=\"`operations`\" pulumi-lang-java=\"`operations`\" pulumi-lang-hcl=\"`operations`\"\u003e`operations`\u003c/span\u003e field.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IAM roles that represent the set of operations that the sources\nspecified in the corresponding `IngressFrom`\nare allowed to perform.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressToOperation:ServicePerimetersServicePerimeterStatusIngressPolicyIngressToOperation": {
            "properties": {
                "methodSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressToOperationMethodSelector:ServicePerimetersServicePerimeterStatusIngressPolicyIngressToOperationMethodSelector"
                    },
                    "description": "API methods or permissions to allow. Method or permission must belong\nto the service specified by `serviceName` field. A single MethodSelector\nentry with `*` specified for the \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e field will allow all methods\nAND permissions for the service specified in `serviceName`.\nStructure is documented below.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The name of the API whose methods or permissions the `IngressPolicy` or\n`EgressPolicy` want to allow. A single `ApiOperation` with serviceName\nfield set to `*` will allow all methods AND permissions for all services.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusIngressPolicyIngressToOperationMethodSelector:ServicePerimetersServicePerimeterStatusIngressPolicyIngressToOperationMethodSelector": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "Value for \u003cspan pulumi-lang-nodejs=\"`method`\" pulumi-lang-dotnet=\"`Method`\" pulumi-lang-go=\"`method`\" pulumi-lang-python=\"`method`\" pulumi-lang-yaml=\"`method`\" pulumi-lang-java=\"`method`\" pulumi-lang-hcl=\"`method`\"\u003e`method`\u003c/span\u003e should be a valid method name for the corresponding\n`serviceName` in `ApiOperation`. If `*` used as value for method,\nthen ALL methods and permissions are allowed.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Value for permission should be a valid Cloud IAM permission for the\ncorresponding `serviceName` in `ApiOperation`.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/ServicePerimetersServicePerimeterStatusVpcAccessibleServices:ServicePerimetersServicePerimeterStatusVpcAccessibleServices": {
            "properties": {
                "allowedServices": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of APIs usable within the Service Perimeter.\nMust be empty unless `enableRestriction` is True.\n"
                },
                "enableRestriction": {
                    "type": "boolean",
                    "description": "Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.\n"
                }
            },
            "type": "object"
        },
        "gcp:accesscontextmanager/getSupportedServiceSupportedMethod:getSupportedServiceSupportedMethod": {
            "properties": {
                "method": {
                    "type": "string",
                    "description": "A valid method name for the respective request mode. Must be a fully qualified name, for example, `storage.googleapis.com/BucketService.GetBucket`.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "A valid Cloud IAM permission for the respective request mode, for example, `storage.buckets.get`.\n"
                }
            },
            "type": "object",
            "required": [
                "method",
                "permission"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:accesscontextmanager/getSupportedServicesSupportedService:getSupportedServicesSupportedService": {
            "properties": {
                "availableOnRestrictedVip": {
                    "type": "boolean",
                    "description": "True if the service is available on the restricted VIP. Services on the restricted VIP typically either support VPC Service Controls or are core infrastructure services required for the functioning of Google Cloud.\n"
                },
                "knownLimitations": {
                    "type": "boolean",
                    "description": "True if the service is supported with some limitations. Check [documentation](https://cloud.google.com/vpc-service-controls/docs/supported-products) for details.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The service name or address of the supported service, such as `storage.googleapis.com`.\n"
                },
                "serviceSupportStage": {
                    "type": "string",
                    "description": "The support stage of the service. Values are `GA`, `PREVIEW`, and `DEPRECATED`.\n"
                },
                "supportStage": {
                    "type": "string",
                    "description": "The support stage of the service.\n"
                },
                "title": {
                    "type": "string",
                    "description": "The name of the supported product, such as 'Cloud Storage'.\n"
                }
            },
            "type": "object",
            "required": [
                "availableOnRestrictedVip",
                "knownLimitations",
                "name",
                "serviceSupportStage",
                "supportStage",
                "title"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/BackupEncryptionConfig:BackupEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:alloydb/BackupEncryptionInfo:BackupEncryptionInfo": {
            "properties": {
                "encryptionType": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Type of encryption.\n"
                },
                "kmsKeyVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nOutput only. Cloud KMS key versions that are being used to protect the database or the backup.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "encryptionType",
                        "kmsKeyVersions"
                    ]
                }
            }
        },
        "gcp:alloydb/BackupExpiryQuantity:BackupExpiryQuantity": {
            "properties": {
                "retentionCount": {
                    "type": "integer",
                    "description": "(Output)\nOutput only. The backup's position among its backups with the same source cluster and type, by descending chronological order create time (i.e. newest first).\n"
                },
                "totalRetentionCount": {
                    "type": "integer",
                    "description": "(Output)\nOutput only. The length of the quantity-based queue, specified by the backup's retention policy.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "retentionCount",
                        "totalRetentionCount"
                    ]
                }
            }
        },
        "gcp:alloydb/ClusterAutomatedBackupPolicy:ClusterAutomatedBackupPolicy": {
            "properties": {
                "backupWindow": {
                    "type": "string",
                    "description": "The length of the time window during which a backup can be taken. If a backup does not succeed within this time window, it will be canceled and considered failed.\nThe backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it will default to 1 hour.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether automated backups are enabled.\n"
                },
                "encryptionConfig": {
                    "$ref": "#/types/gcp:alloydb/ClusterAutomatedBackupPolicyEncryptionConfig:ClusterAutomatedBackupPolicyEncryptionConfig",
                    "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).\nStructure is documented below.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Labels to apply to backups created using this configuration.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location where the backup will be stored. Currently, the only supported option is to store the backup in the same region as the cluster.\n"
                },
                "quantityBasedRetention": {
                    "$ref": "#/types/gcp:alloydb/ClusterAutomatedBackupPolicyQuantityBasedRetention:ClusterAutomatedBackupPolicyQuantityBasedRetention",
                    "description": "Quantity-based Backup retention policy to retain recent backups. Conflicts with 'time_based_retention', both can't be set together.\nStructure is documented below.\n"
                },
                "timeBasedRetention": {
                    "$ref": "#/types/gcp:alloydb/ClusterAutomatedBackupPolicyTimeBasedRetention:ClusterAutomatedBackupPolicyTimeBasedRetention",
                    "description": "Time-based Backup retention policy. Conflicts with 'quantity_based_retention', both can't be set together.\nStructure is documented below.\n"
                },
                "weeklySchedule": {
                    "$ref": "#/types/gcp:alloydb/ClusterAutomatedBackupPolicyWeeklySchedule:ClusterAutomatedBackupPolicyWeeklySchedule",
                    "description": "Weekly schedule for the Backup.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "backupWindow",
                        "enabled",
                        "location",
                        "weeklySchedule"
                    ]
                }
            }
        },
        "gcp:alloydb/ClusterAutomatedBackupPolicyEncryptionConfig:ClusterAutomatedBackupPolicyEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterAutomatedBackupPolicyQuantityBasedRetention:ClusterAutomatedBackupPolicyQuantityBasedRetention": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of backups to retain.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterAutomatedBackupPolicyTimeBasedRetention:ClusterAutomatedBackupPolicyTimeBasedRetention": {
            "properties": {
                "retentionPeriod": {
                    "type": "string",
                    "description": "The retention period.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterAutomatedBackupPolicyWeeklySchedule:ClusterAutomatedBackupPolicyWeeklySchedule": {
            "properties": {
                "daysOfWeeks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The days of the week to perform a backup. At least one day of the week must be provided.\nEach value may be one of: `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`.\n"
                },
                "startTimes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/ClusterAutomatedBackupPolicyWeeklyScheduleStartTime:ClusterAutomatedBackupPolicyWeeklyScheduleStartTime"
                    },
                    "description": "The times during the day to start a backup. At least one start time must be provided. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00).\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "startTimes"
            ]
        },
        "gcp:alloydb/ClusterAutomatedBackupPolicyWeeklyScheduleStartTime:ClusterAutomatedBackupPolicyWeeklyScheduleStartTime": {
            "properties": {
                "hours": {
                    "type": "integer",
                    "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.\n"
                },
                "minutes": {
                    "type": "integer",
                    "description": "Minutes of hour of day. Currently, only the value 0 is supported.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Fractions of seconds in nanoseconds. Currently, only the value 0 is supported.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Seconds of minutes of the time. Currently, only the value 0 is supported.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterBackupSource:ClusterBackupSource": {
            "properties": {
                "backupName": {
                    "type": "string",
                    "description": "The name of the backup resource.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterBackupdrBackupSource:ClusterBackupdrBackupSource": {
            "properties": {
                "backup": {
                    "type": "string",
                    "description": "The name of the BackupDR backup resource.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterContinuousBackupConfig:ClusterContinuousBackupConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether continuous backup recovery is enabled. If not set, defaults to true.\n"
                },
                "encryptionConfig": {
                    "$ref": "#/types/gcp:alloydb/ClusterContinuousBackupConfigEncryptionConfig:ClusterContinuousBackupConfigEncryptionConfig",
                    "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).\nStructure is documented below.\n"
                },
                "recoveryWindowDays": {
                    "type": "integer",
                    "description": "The numbers of days that are eligible to restore from using PITR. To support the entire recovery window, backups and logs are retained for one day more than the recovery window.\nIf not set, defaults to 14 days.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "recoveryWindowDays"
                    ]
                }
            }
        },
        "gcp:alloydb/ClusterContinuousBackupConfigEncryptionConfig:ClusterContinuousBackupConfigEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterContinuousBackupInfo:ClusterContinuousBackupInfo": {
            "properties": {
                "earliestRestorableTime": {
                    "type": "string",
                    "description": "(Output)\nThe earliest restorable time that can be restored to. Output only field.\n"
                },
                "enabledTime": {
                    "type": "string",
                    "description": "(Output)\nWhen ContinuousBackup was most recently enabled. Set to null if ContinuousBackup is not enabled.\n"
                },
                "encryptionInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/ClusterContinuousBackupInfoEncryptionInfo:ClusterContinuousBackupInfoEncryptionInfo"
                    },
                    "description": "(Output)\nOutput only. The encryption information for the WALs and backups required for ContinuousBackup.\nStructure is documented below.\n"
                },
                "schedules": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nDays of the week on which a continuous backup is taken. Output only field. Ignored if passed into the request.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "earliestRestorableTime",
                        "enabledTime",
                        "encryptionInfos",
                        "schedules"
                    ]
                }
            }
        },
        "gcp:alloydb/ClusterContinuousBackupInfoEncryptionInfo:ClusterContinuousBackupInfoEncryptionInfo": {
            "properties": {
                "encryptionType": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Type of encryption.\n"
                },
                "kmsKeyVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nOutput only. Cloud KMS key versions that are being used to protect the database or the backup.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "encryptionType",
                        "kmsKeyVersions"
                    ]
                }
            }
        },
        "gcp:alloydb/ClusterDataplexConfig:ClusterDataplexConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Indicates whether Dataplex integration is enabled for the cluster.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:alloydb/ClusterEncryptionConfig:ClusterEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterEncryptionInfo:ClusterEncryptionInfo": {
            "properties": {
                "encryptionType": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Type of encryption.\n"
                },
                "kmsKeyVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nOutput only. Cloud KMS key versions that are being used to protect the database or the backup.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "encryptionType",
                        "kmsKeyVersions"
                    ]
                }
            }
        },
        "gcp:alloydb/ClusterInitialUser:ClusterInitialUser": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "The initial password for the user.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "passwordWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\n(Optional, Write-Only)\nThe initial password for the user.\n**Note**: This property is write-only and will not be read from the API.\n\n\u003e **Note:** One of \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\" pulumi-lang-hcl=\"`password`\"\u003e`password`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\" pulumi-lang-hcl=\"`password_wo`\"\u003e`passwordWo`\u003c/span\u003e can only be set.\n",
                    "secret": true
                },
                "passwordWoVersion": {
                    "type": "string",
                    "description": "Triggers update of \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\" pulumi-lang-hcl=\"`password_wo`\"\u003e`passwordWo`\u003c/span\u003e write-only. Increment this value when an update to \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\" pulumi-lang-hcl=\"`password_wo`\"\u003e`passwordWo`\u003c/span\u003e is needed. For more info see [updating write-only arguments](https://www.terraform.io/docs/providers/google/guides/using_write_only_arguments.html#updating-write-only-arguments)\n"
                },
                "user": {
                    "type": "string",
                    "description": "The database username.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterMaintenanceUpdatePolicy:ClusterMaintenanceUpdatePolicy": {
            "properties": {
                "maintenanceWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/ClusterMaintenanceUpdatePolicyMaintenanceWindow:ClusterMaintenanceUpdatePolicyMaintenanceWindow"
                    },
                    "description": "Preferred windows to perform maintenance. Currently limited to 1.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterMaintenanceUpdatePolicyMaintenanceWindow:ClusterMaintenanceUpdatePolicyMaintenanceWindow": {
            "properties": {
                "day": {
                    "type": "string",
                    "description": "Preferred day of the week for maintenance, e.g. MONDAY, TUESDAY, etc.\nPossible values are: `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`.\n"
                },
                "startTime": {
                    "$ref": "#/types/gcp:alloydb/ClusterMaintenanceUpdatePolicyMaintenanceWindowStartTime:ClusterMaintenanceUpdatePolicyMaintenanceWindowStartTime",
                    "description": "Preferred time to start the maintenance operation on the specified day. Maintenance will start within 1 hour of this time.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "day",
                "startTime"
            ]
        },
        "gcp:alloydb/ClusterMaintenanceUpdatePolicyMaintenanceWindowStartTime:ClusterMaintenanceUpdatePolicyMaintenanceWindowStartTime": {
            "properties": {
                "hours": {
                    "type": "integer",
                    "description": "Hours of day in 24 hour format. Should be from 0 to 23.\n"
                },
                "minutes": {
                    "type": "integer",
                    "description": "Minutes of hour of day. Currently, only the value 0 is supported.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Fractions of seconds in nanoseconds. Currently, only the value 0 is supported.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Seconds of minutes of the time. Currently, only the value 0 is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "hours"
            ]
        },
        "gcp:alloydb/ClusterMigrationSource:ClusterMigrationSource": {
            "properties": {
                "hostPort": {
                    "type": "string",
                    "description": "The host and port of the on-premises instance in host:port format\n"
                },
                "referenceId": {
                    "type": "string",
                    "description": "Place holder for the external source identifier(e.g DMS job name) that created the cluster.\n"
                },
                "sourceType": {
                    "type": "string",
                    "description": "Type of migration source.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterNetworkConfig:ClusterNetworkConfig": {
            "properties": {
                "allocatedIpRange": {
                    "type": "string",
                    "description": "The name of the allocated IP range for the private IP AlloyDB cluster. For example: \"google-managed-services-default\".\nIf set, the instance IPs for this cluster will be created in the allocated range.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster.\nIt is specified in the form: \"projects/{projectNumber}/global/networks/{network_id}\".\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/ClusterPscConfig:ClusterPscConfig": {
            "properties": {
                "pscEnabled": {
                    "type": "boolean",
                    "description": "Create an instance that allows connections from Private Service Connect endpoints to the instance.\n"
                },
                "serviceOwnedProjectNumber": {
                    "type": "integer",
                    "description": "(Output)\nThe project number that needs to be allowlisted on the network attachment to enable outbound connectivity, if the network attachment is configured to ACCEPT_MANUAL connections.\nIn case the network attachment is configured to ACCEPT_AUTOMATIC, this project number does not need to be allowlisted explicitly.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceOwnedProjectNumber"
                    ]
                }
            }
        },
        "gcp:alloydb/ClusterRestoreBackupSource:ClusterRestoreBackupSource": {
            "properties": {
                "backupName": {
                    "type": "string",
                    "description": "The name of the backup that this cluster is restored from.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "backupName"
            ]
        },
        "gcp:alloydb/ClusterRestoreBackupdrBackupSource:ClusterRestoreBackupdrBackupSource": {
            "properties": {
                "backup": {
                    "type": "string",
                    "description": "The name of the BackupDR backup that this cluster is restored from. It must be of the format \"projects/[PROJECT]/locations/[LOCATION]/backupVaults/[VAULT_ID]/dataSources/[DATASOURCE_ID]/backups/[BACKUP_ID]\"\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "backup"
            ]
        },
        "gcp:alloydb/ClusterRestoreBackupdrPitrSource:ClusterRestoreBackupdrPitrSource": {
            "properties": {
                "dataSource": {
                    "type": "string",
                    "description": "The name of the BackupDR data source that this cluster is restore from. It must be of the format \"projects/[PROJECT]/locations/[LOCATION]/backupVaults/[VAULT_ID]/dataSources/[DATASOURCE_ID]\"\n",
                    "willReplaceOnChanges": true
                },
                "pointInTime": {
                    "type": "string",
                    "description": "The point in time that this cluster is restored to, in RFC 3339 format.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "dataSource",
                "pointInTime"
            ]
        },
        "gcp:alloydb/ClusterRestoreContinuousBackupSource:ClusterRestoreContinuousBackupSource": {
            "properties": {
                "cluster": {
                    "type": "string",
                    "description": "The name of the source cluster that this cluster is restored from.\n",
                    "willReplaceOnChanges": true
                },
                "pointInTime": {
                    "type": "string",
                    "description": "The point in time that this cluster is restored to, in RFC 3339 format.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "cluster",
                "pointInTime"
            ]
        },
        "gcp:alloydb/ClusterSecondaryConfig:ClusterSecondaryConfig": {
            "properties": {
                "primaryClusterName": {
                    "type": "string",
                    "description": "Name of the primary cluster must be in the format\n'projects/{project}/locations/{location}/clusters/{cluster_id}'\n"
                }
            },
            "type": "object",
            "required": [
                "primaryClusterName"
            ]
        },
        "gcp:alloydb/ClusterTrialMetadata:ClusterTrialMetadata": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "End time of the trial cluster.\n"
                },
                "graceEndTime": {
                    "type": "string",
                    "description": "Grace end time of the trial cluster.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Start time of the trial cluster.\n"
                },
                "upgradeTime": {
                    "type": "string",
                    "description": "Upgrade time of the trial cluster to standard cluster.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/InstanceClientConnectionConfig:InstanceClientConnectionConfig": {
            "properties": {
                "requireConnectors": {
                    "type": "boolean",
                    "description": "Configuration to enforce connectors only (ex: AuthProxy) connections to the database.\n"
                },
                "sslConfig": {
                    "$ref": "#/types/gcp:alloydb/InstanceClientConnectionConfigSslConfig:InstanceClientConnectionConfigSslConfig",
                    "description": "SSL config option for this instance.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sslConfig"
                    ]
                }
            }
        },
        "gcp:alloydb/InstanceClientConnectionConfigSslConfig:InstanceClientConnectionConfigSslConfig": {
            "properties": {
                "sslMode": {
                    "type": "string",
                    "description": "SSL mode. Specifies client-server SSL/TLS connection behavior.\nPossible values are: `ENCRYPTED_ONLY`, `ALLOW_UNENCRYPTED_AND_ENCRYPTED`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sslMode"
                    ]
                }
            }
        },
        "gcp:alloydb/InstanceConnectionPoolConfig:InstanceConnectionPoolConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to enabled Managed Connection Pool.\n"
                },
                "flags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Flags for configuring managed connection pooling when it is enabled.\nThese flags will only be set if `connection_pool_config.enabled` is\ntrue.\nPlease see\nhttps://cloud.google.com/alloydb/docs/configure-managed-connection-pooling#configuration-options\nfor a comprehensive list of flags that can be set. To specify the flags\nin Terraform, please remove the \"connection-pooling-\" prefix and use\nunderscores instead of dashes in the name. For example,\n\"connection-pooling-pool-mode\" would be \u003cspan pulumi-lang-nodejs=\"\"poolMode\"\" pulumi-lang-dotnet=\"\"PoolMode\"\" pulumi-lang-go=\"\"poolMode\"\" pulumi-lang-python=\"\"pool_mode\"\" pulumi-lang-yaml=\"\"poolMode\"\" pulumi-lang-java=\"\"poolMode\"\" pulumi-lang-hcl=\"\"pool_mode\"\"\u003e\"poolMode\"\u003c/span\u003e.\n"
                },
                "poolerCount": {
                    "type": "integer",
                    "description": "(Output)\nThe number of running poolers per instance.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "poolerCount"
                    ]
                }
            }
        },
        "gcp:alloydb/InstanceMachineConfig:InstanceMachineConfig": {
            "properties": {
                "cpuCount": {
                    "type": "integer",
                    "description": "The number of CPU's in the VM instance.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "Machine type of the VM instance.\nE.g. \"n2-highmem-4\", \"n2-highmem-8\", \"c4a-highmem-4-lssd\".\n\u003cspan pulumi-lang-nodejs=\"`cpuCount`\" pulumi-lang-dotnet=\"`CpuCount`\" pulumi-lang-go=\"`cpuCount`\" pulumi-lang-python=\"`cpu_count`\" pulumi-lang-yaml=\"`cpuCount`\" pulumi-lang-java=\"`cpuCount`\" pulumi-lang-hcl=\"`cpu_count`\"\u003e`cpuCount`\u003c/span\u003e must match the number of vCPUs in the machine type.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpuCount",
                        "machineType"
                    ]
                }
            }
        },
        "gcp:alloydb/InstanceNetworkConfig:InstanceNetworkConfig": {
            "properties": {
                "allocatedIpRangeOverride": {
                    "type": "string",
                    "description": "Name of the allocated IP range for the private IP AlloyDB instance, for example: \"google-managed-services-default\".\nIf set, the instance IPs will be created from this allocated range and will override the IP range used by the parent cluster.\nThe range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression a-z?.\n",
                    "willReplaceOnChanges": true
                },
                "authorizedExternalNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/InstanceNetworkConfigAuthorizedExternalNetwork:InstanceNetworkConfigAuthorizedExternalNetwork"
                    },
                    "description": "A list of external networks authorized to access this instance. This\nfield is only allowed to be set when \u003cspan pulumi-lang-nodejs=\"`enablePublicIp`\" pulumi-lang-dotnet=\"`EnablePublicIp`\" pulumi-lang-go=\"`enablePublicIp`\" pulumi-lang-python=\"`enable_public_ip`\" pulumi-lang-yaml=\"`enablePublicIp`\" pulumi-lang-java=\"`enablePublicIp`\" pulumi-lang-hcl=\"`enable_public_ip`\"\u003e`enablePublicIp`\u003c/span\u003e is set to\ntrue.\nStructure is documented below.\n"
                },
                "enableOutboundPublicIp": {
                    "type": "boolean",
                    "description": "Enabling outbound public ip for the instance.\n"
                },
                "enablePublicIp": {
                    "type": "boolean",
                    "description": "Enabling public ip for the instance. If a user wishes to disable this,\nplease also clear the list of the authorized external networks set on\nthe same instance.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/InstanceNetworkConfigAuthorizedExternalNetwork:InstanceNetworkConfigAuthorizedExternalNetwork": {
            "properties": {
                "cidrRange": {
                    "type": "string",
                    "description": "CIDR range for one authorized network of the instance.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/InstanceObservabilityConfig:InstanceObservabilityConfig": {
            "properties": {
                "assistiveExperiencesEnabled": {
                    "type": "boolean",
                    "description": "Whether assistive experiences are enabled for this AlloyDB instance.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Observability feature status for an instance.\n"
                },
                "maxQueryStringLength": {
                    "type": "integer",
                    "description": "Query string length. The default value is 10240. Any integer between 1024 and 100000 is considered valid.\n"
                },
                "preserveComments": {
                    "type": "boolean",
                    "description": "Preserve comments in the query string.\n"
                },
                "queryPlansPerMinute": {
                    "type": "integer",
                    "description": "Number of query execution plans captured by Insights per minute for all queries combined. The default value is 5. Any integer between 0 and 200 is considered valid.\n"
                },
                "recordApplicationTags": {
                    "type": "boolean",
                    "description": "Record application tags for an instance. This flag is turned \"on\" by default.\n"
                },
                "trackActiveQueries": {
                    "type": "boolean",
                    "description": "Track actively running queries. If not set, default value is \"off\".\n"
                },
                "trackClientAddress": {
                    "type": "boolean",
                    "description": "Track client address for an instance. If not set, default value is \"off\".\n"
                },
                "trackWaitEventTypes": {
                    "type": "boolean",
                    "description": "Record wait event types during query execution for an instance.\n"
                },
                "trackWaitEvents": {
                    "type": "boolean",
                    "description": "Record wait events during query execution for an instance.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "assistiveExperiencesEnabled",
                        "enabled",
                        "maxQueryStringLength",
                        "preserveComments",
                        "queryPlansPerMinute",
                        "recordApplicationTags",
                        "trackActiveQueries",
                        "trackClientAddress",
                        "trackWaitEventTypes",
                        "trackWaitEvents"
                    ]
                }
            }
        },
        "gcp:alloydb/InstancePscInstanceConfig:InstancePscInstanceConfig": {
            "properties": {
                "allowedConsumerProjects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of consumer projects that are allowed to create PSC endpoints to service-attachments to this instance.\nThese should be specified as project numbers only.\n"
                },
                "pscAutoConnections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/InstancePscInstanceConfigPscAutoConnection:InstancePscInstanceConfigPscAutoConnection"
                    },
                    "description": "Configurations for setting up PSC service automation.\nStructure is documented below.\n"
                },
                "pscDnsName": {
                    "type": "string",
                    "description": "(Output)\nThe DNS name of the instance for PSC connectivity.\nName convention: \u003cuid\u003e.\u003cuid\u003e.\u003cregion\u003e.alloydb-psc.goog\n"
                },
                "pscInterfaceConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/InstancePscInstanceConfigPscInterfaceConfig:InstancePscInstanceConfigPscInterfaceConfig"
                    },
                    "description": "Configurations for setting up PSC interfaces attached to the instance\nwhich are used for outbound connectivity. Currently, AlloyDB supports only 0 or 1 PSC interface.\nStructure is documented below.\n"
                },
                "serviceAttachmentLink": {
                    "type": "string",
                    "description": "(Output)\nThe service attachment created when Private Service Connect (PSC) is enabled for the instance.\nThe name of the resource will be in the format of\n`projects/\u003calloydb-tenant-project-number\u003e/regions/\u003cregion-name\u003e/serviceAttachments/\u003cservice-attachment-name\u003e`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "pscDnsName",
                        "serviceAttachmentLink"
                    ]
                }
            }
        },
        "gcp:alloydb/InstancePscInstanceConfigPscAutoConnection:InstancePscInstanceConfigPscAutoConnection": {
            "properties": {
                "consumerNetwork": {
                    "type": "string",
                    "description": "The consumer network for the PSC service automation, example:\n\"projects/vpc-host-project/global/networks/default\".\nThe consumer network might be hosted a different project than the\nconsumer project. The API expects the consumer project specified to be\nthe project ID (and not the project number)\n"
                },
                "consumerNetworkStatus": {
                    "type": "string",
                    "description": "(Output)\nThe status of the service connection policy.\n"
                },
                "consumerProject": {
                    "type": "string",
                    "description": "The consumer project to which the PSC service automation endpoint will\nbe created. The API expects the consumer project to be the project ID(\nand not the project number).\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "(Output)\nThe IP address of the PSC service automation endpoint.\n"
                },
                "status": {
                    "type": "string",
                    "description": "(Output)\nThe status of the PSC service automation connection.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "consumerNetworkStatus",
                        "ipAddress",
                        "status"
                    ]
                }
            }
        },
        "gcp:alloydb/InstancePscInstanceConfigPscInterfaceConfig:InstancePscInstanceConfigPscInterfaceConfig": {
            "properties": {
                "networkAttachmentResource": {
                    "type": "string",
                    "description": "The network attachment resource created in the consumer project to which the PSC interface will be linked.\nThis is of the format: \"projects/${CONSUMER_PROJECT}/regions/${REGION}/networkAttachments/${NETWORK_ATTACHMENT_NAME}\".\nThe network attachment must be in the same region as the instance.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/InstanceQueryInsightsConfig:InstanceQueryInsightsConfig": {
            "properties": {
                "queryPlansPerMinute": {
                    "type": "integer",
                    "description": "Number of query execution plans captured by Insights per minute for all queries combined. The default value is 5. Any integer between 0 and 20 is considered valid.\n"
                },
                "queryStringLength": {
                    "type": "integer",
                    "description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid.\n"
                },
                "recordApplicationTags": {
                    "type": "boolean",
                    "description": "Record application tags for an instance. This flag is turned \"on\" by default.\n"
                },
                "recordClientAddress": {
                    "type": "boolean",
                    "description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/InstanceReadPoolConfig:InstanceReadPoolConfig": {
            "properties": {
                "nodeCount": {
                    "type": "integer",
                    "description": "Read capacity, i.e. number of nodes in a read pool instance.\n"
                }
            },
            "type": "object"
        },
        "gcp:alloydb/getClusterAutomatedBackupPolicy:getClusterAutomatedBackupPolicy": {
            "properties": {
                "backupWindow": {
                    "type": "string",
                    "description": "The length of the time window during which a backup can be taken. If a backup does not succeed within this time window, it will be canceled and considered failed.\n\nThe backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it will default to 1 hour.\n\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether automated backups are enabled.\n"
                },
                "encryptionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterAutomatedBackupPolicyEncryptionConfig:getClusterAutomatedBackupPolicyEncryptionConfig"
                    },
                    "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Labels to apply to backups created using this configuration.\n"
                },
                "location": {
                    "type": "string",
                    "description": "(optional)\nThe canonical id of the location.If it is not provided, the provider project is used. For example: us-east1.\n"
                },
                "quantityBasedRetentions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterAutomatedBackupPolicyQuantityBasedRetention:getClusterAutomatedBackupPolicyQuantityBasedRetention"
                    },
                    "description": "Quantity-based Backup retention policy to retain recent backups. Conflicts with 'time_based_retention', both can't be set together.\n"
                },
                "timeBasedRetentions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterAutomatedBackupPolicyTimeBasedRetention:getClusterAutomatedBackupPolicyTimeBasedRetention"
                    },
                    "description": "Time-based Backup retention policy. Conflicts with 'quantity_based_retention', both can't be set together.\n"
                },
                "weeklySchedules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterAutomatedBackupPolicyWeeklySchedule:getClusterAutomatedBackupPolicyWeeklySchedule"
                    },
                    "description": "Weekly schedule for the Backup.\n"
                }
            },
            "type": "object",
            "required": [
                "backupWindow",
                "enabled",
                "encryptionConfigs",
                "labels",
                "location",
                "quantityBasedRetentions",
                "timeBasedRetentions",
                "weeklySchedules"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterAutomatedBackupPolicyEncryptionConfig:getClusterAutomatedBackupPolicyEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterAutomatedBackupPolicyQuantityBasedRetention:getClusterAutomatedBackupPolicyQuantityBasedRetention": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of backups to retain.\n"
                }
            },
            "type": "object",
            "required": [
                "count"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterAutomatedBackupPolicyTimeBasedRetention:getClusterAutomatedBackupPolicyTimeBasedRetention": {
            "properties": {
                "retentionPeriod": {
                    "type": "string",
                    "description": "The retention period.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                }
            },
            "type": "object",
            "required": [
                "retentionPeriod"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterAutomatedBackupPolicyWeeklySchedule:getClusterAutomatedBackupPolicyWeeklySchedule": {
            "properties": {
                "daysOfWeeks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The days of the week to perform a backup. At least one day of the week must be provided. Possible values: [\"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\", \"SUNDAY\"]\n"
                },
                "startTimes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterAutomatedBackupPolicyWeeklyScheduleStartTime:getClusterAutomatedBackupPolicyWeeklyScheduleStartTime"
                    },
                    "description": "The times during the day to start a backup. At least one start time must be provided. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00).\n"
                }
            },
            "type": "object",
            "required": [
                "daysOfWeeks",
                "startTimes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterAutomatedBackupPolicyWeeklyScheduleStartTime:getClusterAutomatedBackupPolicyWeeklyScheduleStartTime": {
            "properties": {
                "hours": {
                    "type": "integer",
                    "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.\n"
                },
                "minutes": {
                    "type": "integer",
                    "description": "Minutes of hour of day. Currently, only the value 0 is supported.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Fractions of seconds in nanoseconds. Currently, only the value 0 is supported.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Seconds of minutes of the time. Currently, only the value 0 is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "hours",
                "minutes",
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterBackupSource:getClusterBackupSource": {
            "properties": {
                "backupName": {
                    "type": "string",
                    "description": "The name of the backup resource.\n"
                }
            },
            "type": "object",
            "required": [
                "backupName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterBackupdrBackupSource:getClusterBackupdrBackupSource": {
            "properties": {
                "backup": {
                    "type": "string",
                    "description": "The name of the BackupDR backup resource.\n"
                }
            },
            "type": "object",
            "required": [
                "backup"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterContinuousBackupConfig:getClusterContinuousBackupConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether continuous backup recovery is enabled. If not set, defaults to true.\n"
                },
                "encryptionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterContinuousBackupConfigEncryptionConfig:getClusterContinuousBackupConfigEncryptionConfig"
                    },
                    "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).\n"
                },
                "recoveryWindowDays": {
                    "type": "integer",
                    "description": "The numbers of days that are eligible to restore from using PITR. To support the entire recovery window, backups and logs are retained for one day more than the recovery window.\n\nIf not set, defaults to 14 days.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "encryptionConfigs",
                "recoveryWindowDays"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterContinuousBackupConfigEncryptionConfig:getClusterContinuousBackupConfigEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterContinuousBackupInfo:getClusterContinuousBackupInfo": {
            "properties": {
                "earliestRestorableTime": {
                    "type": "string",
                    "description": "The earliest restorable time that can be restored to. Output only field.\n"
                },
                "enabledTime": {
                    "type": "string",
                    "description": "When ContinuousBackup was most recently enabled. Set to null if ContinuousBackup is not enabled.\n"
                },
                "encryptionInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterContinuousBackupInfoEncryptionInfo:getClusterContinuousBackupInfoEncryptionInfo"
                    },
                    "description": "Output only. The encryption information for the WALs and backups required for ContinuousBackup.\n"
                },
                "schedules": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Days of the week on which a continuous backup is taken. Output only field. Ignored if passed into the request.\n"
                }
            },
            "type": "object",
            "required": [
                "earliestRestorableTime",
                "enabledTime",
                "encryptionInfos",
                "schedules"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterContinuousBackupInfoEncryptionInfo:getClusterContinuousBackupInfoEncryptionInfo": {
            "properties": {
                "encryptionType": {
                    "type": "string",
                    "description": "Output only. Type of encryption.\n"
                },
                "kmsKeyVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Output only. Cloud KMS key versions that are being used to protect the database or the backup.\n"
                }
            },
            "type": "object",
            "required": [
                "encryptionType",
                "kmsKeyVersions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterDataplexConfig:getClusterDataplexConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Indicates whether Dataplex integration is enabled for the cluster.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterEncryptionConfig:getClusterEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterEncryptionInfo:getClusterEncryptionInfo": {
            "properties": {
                "encryptionType": {
                    "type": "string",
                    "description": "Output only. Type of encryption.\n"
                },
                "kmsKeyVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Output only. Cloud KMS key versions that are being used to protect the database or the backup.\n"
                }
            },
            "type": "object",
            "required": [
                "encryptionType",
                "kmsKeyVersions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterInitialUser:getClusterInitialUser": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "The initial password for the user.\n"
                },
                "passwordWo": {
                    "type": "string",
                    "description": "The initial password for the user.\n"
                },
                "passwordWoVersion": {
                    "type": "string",
                    "description": "Triggers update of 'password_wo' write-only. Increment this value when an update to 'password_wo' is needed. For more info see [updating write-only arguments](https://www.terraform.io/docs/providers/google/guides/using_write_only_arguments.html#updating-write-only-arguments)\n"
                },
                "user": {
                    "type": "string",
                    "description": "The database username.\n"
                }
            },
            "type": "object",
            "required": [
                "password",
                "passwordWo",
                "passwordWoVersion",
                "user"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterMaintenanceUpdatePolicy:getClusterMaintenanceUpdatePolicy": {
            "properties": {
                "maintenanceWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterMaintenanceUpdatePolicyMaintenanceWindow:getClusterMaintenanceUpdatePolicyMaintenanceWindow"
                    },
                    "description": "Preferred windows to perform maintenance. Currently limited to 1.\n"
                }
            },
            "type": "object",
            "required": [
                "maintenanceWindows"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterMaintenanceUpdatePolicyMaintenanceWindow:getClusterMaintenanceUpdatePolicyMaintenanceWindow": {
            "properties": {
                "day": {
                    "type": "string",
                    "description": "Preferred day of the week for maintenance, e.g. MONDAY, TUESDAY, etc. Possible values: [\"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\", \"SUNDAY\"]\n"
                },
                "startTimes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getClusterMaintenanceUpdatePolicyMaintenanceWindowStartTime:getClusterMaintenanceUpdatePolicyMaintenanceWindowStartTime"
                    },
                    "description": "Preferred time to start the maintenance operation on the specified day. Maintenance will start within 1 hour of this time.\n"
                }
            },
            "type": "object",
            "required": [
                "day",
                "startTimes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterMaintenanceUpdatePolicyMaintenanceWindowStartTime:getClusterMaintenanceUpdatePolicyMaintenanceWindowStartTime": {
            "properties": {
                "hours": {
                    "type": "integer",
                    "description": "Hours of day in 24 hour format. Should be from 0 to 23.\n"
                },
                "minutes": {
                    "type": "integer",
                    "description": "Minutes of hour of day. Currently, only the value 0 is supported.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Fractions of seconds in nanoseconds. Currently, only the value 0 is supported.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Seconds of minutes of the time. Currently, only the value 0 is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "hours",
                "minutes",
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterMigrationSource:getClusterMigrationSource": {
            "properties": {
                "hostPort": {
                    "type": "string",
                    "description": "The host and port of the on-premises instance in host:port format\n"
                },
                "referenceId": {
                    "type": "string",
                    "description": "Place holder for the external source identifier(e.g DMS job name) that created the cluster.\n"
                },
                "sourceType": {
                    "type": "string",
                    "description": "Type of migration source.\n"
                }
            },
            "type": "object",
            "required": [
                "hostPort",
                "referenceId",
                "sourceType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterNetworkConfig:getClusterNetworkConfig": {
            "properties": {
                "allocatedIpRange": {
                    "type": "string",
                    "description": "The name of the allocated IP range for the private IP AlloyDB cluster. For example: \"google-managed-services-default\".\nIf set, the instance IPs for this cluster will be created in the allocated range.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster.\nIt is specified in the form: \"projects/{projectNumber}/global/networks/{network_id}\".\n"
                }
            },
            "type": "object",
            "required": [
                "allocatedIpRange",
                "network"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterPscConfig:getClusterPscConfig": {
            "properties": {
                "pscEnabled": {
                    "type": "boolean",
                    "description": "Create an instance that allows connections from Private Service Connect endpoints to the instance.\n"
                },
                "serviceOwnedProjectNumber": {
                    "type": "integer",
                    "description": "The project number that needs to be allowlisted on the network attachment to enable outbound connectivity, if the network attachment is configured to ACCEPT_MANUAL connections.\nIn case the network attachment is configured to ACCEPT_AUTOMATIC, this project number does not need to be allowlisted explicitly.\n"
                }
            },
            "type": "object",
            "required": [
                "pscEnabled",
                "serviceOwnedProjectNumber"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterRestoreBackupSource:getClusterRestoreBackupSource": {
            "properties": {
                "backupName": {
                    "type": "string",
                    "description": "The name of the backup that this cluster is restored from.\n"
                }
            },
            "type": "object",
            "required": [
                "backupName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterRestoreBackupdrBackupSource:getClusterRestoreBackupdrBackupSource": {
            "properties": {
                "backup": {
                    "type": "string",
                    "description": "The name of the BackupDR backup that this cluster is restored from. It must be of the format \"projects/[PROJECT]/locations/[LOCATION]/backupVaults/[VAULT_ID]/dataSources/[DATASOURCE_ID]/backups/[BACKUP_ID]\"\n"
                }
            },
            "type": "object",
            "required": [
                "backup"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterRestoreBackupdrPitrSource:getClusterRestoreBackupdrPitrSource": {
            "properties": {
                "dataSource": {
                    "type": "string",
                    "description": "The name of the BackupDR data source that this cluster is restore from. It must be of the format \"projects/[PROJECT]/locations/[LOCATION]/backupVaults/[VAULT_ID]/dataSources/[DATASOURCE_ID]\"\n"
                },
                "pointInTime": {
                    "type": "string",
                    "description": "The point in time that this cluster is restored to, in RFC 3339 format.\n"
                }
            },
            "type": "object",
            "required": [
                "dataSource",
                "pointInTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterRestoreContinuousBackupSource:getClusterRestoreContinuousBackupSource": {
            "properties": {
                "cluster": {
                    "type": "string",
                    "description": "The name of the source cluster that this cluster is restored from.\n"
                },
                "pointInTime": {
                    "type": "string",
                    "description": "The point in time that this cluster is restored to, in RFC 3339 format.\n"
                }
            },
            "type": "object",
            "required": [
                "cluster",
                "pointInTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterSecondaryConfig:getClusterSecondaryConfig": {
            "properties": {
                "primaryClusterName": {
                    "type": "string",
                    "description": "Name of the primary cluster must be in the format\n'projects/{project}/locations/{location}/clusters/{cluster_id}'\n"
                }
            },
            "type": "object",
            "required": [
                "primaryClusterName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getClusterTrialMetadata:getClusterTrialMetadata": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "End time of the trial cluster.\n"
                },
                "graceEndTime": {
                    "type": "string",
                    "description": "Grace end time of the trial cluster.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Start time of the trial cluster.\n"
                },
                "upgradeTime": {
                    "type": "string",
                    "description": "Upgrade time of the trial cluster to standard cluster.\n"
                }
            },
            "type": "object",
            "required": [
                "endTime",
                "graceEndTime",
                "startTime",
                "upgradeTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceClientConnectionConfig:getInstanceClientConnectionConfig": {
            "properties": {
                "requireConnectors": {
                    "type": "boolean",
                    "description": "Configuration to enforce connectors only (ex: AuthProxy) connections to the database.\n"
                },
                "sslConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getInstanceClientConnectionConfigSslConfig:getInstanceClientConnectionConfigSslConfig"
                    },
                    "description": "SSL config option for this instance.\n"
                }
            },
            "type": "object",
            "required": [
                "requireConnectors",
                "sslConfigs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceClientConnectionConfigSslConfig:getInstanceClientConnectionConfigSslConfig": {
            "properties": {
                "sslMode": {
                    "type": "string",
                    "description": "SSL mode. Specifies client-server SSL/TLS connection behavior. Possible values: [\"ENCRYPTED_ONLY\", \"ALLOW_UNENCRYPTED_AND_ENCRYPTED\"]\n"
                }
            },
            "type": "object",
            "required": [
                "sslMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceConnectionPoolConfig:getInstanceConnectionPoolConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to enabled Managed Connection Pool.\n"
                },
                "flags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Flags for configuring managed connection pooling when it is enabled.\nThese flags will only be set if 'connection_pool_config.enabled' is\ntrue.\nPlease see\nhttps://cloud.google.com/alloydb/docs/configure-managed-connection-pooling#configuration-options\nfor a comprehensive list of flags that can be set. To specify the flags\nin Terraform, please remove the \"connection-pooling-\" prefix and use\nunderscores instead of dashes in the name. For example,\n\"connection-pooling-pool-mode\" would be \u003cspan pulumi-lang-nodejs=\"\"poolMode\"\" pulumi-lang-dotnet=\"\"PoolMode\"\" pulumi-lang-go=\"\"poolMode\"\" pulumi-lang-python=\"\"pool_mode\"\" pulumi-lang-yaml=\"\"poolMode\"\" pulumi-lang-java=\"\"poolMode\"\" pulumi-lang-hcl=\"\"pool_mode\"\"\u003e\"poolMode\"\u003c/span\u003e.\n"
                },
                "poolerCount": {
                    "type": "integer",
                    "description": "The number of running poolers per instance.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "flags",
                "poolerCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceMachineConfig:getInstanceMachineConfig": {
            "properties": {
                "cpuCount": {
                    "type": "integer",
                    "description": "The number of CPU's in the VM instance.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "Machine type of the VM instance.\nE.g. \"n2-highmem-4\", \"n2-highmem-8\", \"c4a-highmem-4-lssd\".\n'cpu_count' must match the number of vCPUs in the machine type.\n"
                }
            },
            "type": "object",
            "required": [
                "cpuCount",
                "machineType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceNetworkConfig:getInstanceNetworkConfig": {
            "properties": {
                "allocatedIpRangeOverride": {
                    "type": "string",
                    "description": "Name of the allocated IP range for the private IP AlloyDB instance, for example: \"google-managed-services-default\".\nIf set, the instance IPs will be created from this allocated range and will override the IP range used by the parent cluster.\nThe range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression a-z?.\n"
                },
                "authorizedExternalNetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getInstanceNetworkConfigAuthorizedExternalNetwork:getInstanceNetworkConfigAuthorizedExternalNetwork"
                    },
                    "description": "A list of external networks authorized to access this instance. This\nfield is only allowed to be set when 'enable_public_ip' is set to\ntrue.\n"
                },
                "enableOutboundPublicIp": {
                    "type": "boolean",
                    "description": "Enabling outbound public ip for the instance.\n"
                },
                "enablePublicIp": {
                    "type": "boolean",
                    "description": "Enabling public ip for the instance. If a user wishes to disable this,\nplease also clear the list of the authorized external networks set on\nthe same instance.\n"
                }
            },
            "type": "object",
            "required": [
                "allocatedIpRangeOverride",
                "authorizedExternalNetworks",
                "enableOutboundPublicIp",
                "enablePublicIp"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceNetworkConfigAuthorizedExternalNetwork:getInstanceNetworkConfigAuthorizedExternalNetwork": {
            "properties": {
                "cidrRange": {
                    "type": "string",
                    "description": "CIDR range for one authorized network of the instance.\n"
                }
            },
            "type": "object",
            "required": [
                "cidrRange"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceObservabilityConfig:getInstanceObservabilityConfig": {
            "properties": {
                "assistiveExperiencesEnabled": {
                    "type": "boolean",
                    "description": "Whether assistive experiences are enabled for this AlloyDB instance.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Observability feature status for an instance.\n"
                },
                "maxQueryStringLength": {
                    "type": "integer",
                    "description": "Query string length. The default value is 10240. Any integer between 1024 and 100000 is considered valid.\n"
                },
                "preserveComments": {
                    "type": "boolean",
                    "description": "Preserve comments in the query string.\n"
                },
                "queryPlansPerMinute": {
                    "type": "integer",
                    "description": "Number of query execution plans captured by Insights per minute for all queries combined. The default value is 5. Any integer between 0 and 200 is considered valid.\n"
                },
                "recordApplicationTags": {
                    "type": "boolean",
                    "description": "Record application tags for an instance. This flag is turned \"on\" by default.\n"
                },
                "trackActiveQueries": {
                    "type": "boolean",
                    "description": "Track actively running queries. If not set, default value is \"off\".\n"
                },
                "trackClientAddress": {
                    "type": "boolean",
                    "description": "Track client address for an instance. If not set, default value is \"off\".\n"
                },
                "trackWaitEventTypes": {
                    "type": "boolean",
                    "description": "Record wait event types during query execution for an instance.\n"
                },
                "trackWaitEvents": {
                    "type": "boolean",
                    "description": "Record wait events during query execution for an instance.\n"
                }
            },
            "type": "object",
            "required": [
                "assistiveExperiencesEnabled",
                "enabled",
                "maxQueryStringLength",
                "preserveComments",
                "queryPlansPerMinute",
                "recordApplicationTags",
                "trackActiveQueries",
                "trackClientAddress",
                "trackWaitEventTypes",
                "trackWaitEvents"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstancePscInstanceConfig:getInstancePscInstanceConfig": {
            "properties": {
                "allowedConsumerProjects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of consumer projects that are allowed to create PSC endpoints to service-attachments to this instance.\nThese should be specified as project numbers only.\n"
                },
                "pscAutoConnections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getInstancePscInstanceConfigPscAutoConnection:getInstancePscInstanceConfigPscAutoConnection"
                    },
                    "description": "Configurations for setting up PSC service automation.\n"
                },
                "pscDnsName": {
                    "type": "string",
                    "description": "The DNS name of the instance for PSC connectivity.\nName convention: \u003cuid\u003e.\u003cuid\u003e.\u003cregion\u003e.alloydb-psc.goog\n"
                },
                "pscInterfaceConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:alloydb/getInstancePscInstanceConfigPscInterfaceConfig:getInstancePscInstanceConfigPscInterfaceConfig"
                    },
                    "description": "Configurations for setting up PSC interfaces attached to the instance\nwhich are used for outbound connectivity. Currently, AlloyDB supports only 0 or 1 PSC interface.\n"
                },
                "serviceAttachmentLink": {
                    "type": "string",
                    "description": "The service attachment created when Private Service Connect (PSC) is enabled for the instance.\nThe name of the resource will be in the format of\n'projects/\u003calloydb-tenant-project-number\u003e/regions/\u003cregion-name\u003e/serviceAttachments/\u003cservice-attachment-name\u003e'\n"
                }
            },
            "type": "object",
            "required": [
                "allowedConsumerProjects",
                "pscAutoConnections",
                "pscDnsName",
                "pscInterfaceConfigs",
                "serviceAttachmentLink"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstancePscInstanceConfigPscAutoConnection:getInstancePscInstanceConfigPscAutoConnection": {
            "properties": {
                "consumerNetwork": {
                    "type": "string",
                    "description": "The consumer network for the PSC service automation, example:\n\"projects/vpc-host-project/global/networks/default\".\nThe consumer network might be hosted a different project than the\nconsumer project. The API expects the consumer project specified to be\nthe project ID (and not the project number)\n"
                },
                "consumerNetworkStatus": {
                    "type": "string",
                    "description": "The status of the service connection policy.\n"
                },
                "consumerProject": {
                    "type": "string",
                    "description": "The consumer project to which the PSC service automation endpoint will\nbe created. The API expects the consumer project to be the project ID(\nand not the project number).\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address of the PSC service automation endpoint.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the PSC service automation connection.\n"
                }
            },
            "type": "object",
            "required": [
                "consumerNetwork",
                "consumerNetworkStatus",
                "consumerProject",
                "ipAddress",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstancePscInstanceConfigPscInterfaceConfig:getInstancePscInstanceConfigPscInterfaceConfig": {
            "properties": {
                "networkAttachmentResource": {
                    "type": "string",
                    "description": "The network attachment resource created in the consumer project to which the PSC interface will be linked.\nThis is of the format: \"projects/${CONSUMER_PROJECT}/regions/${REGION}/networkAttachments/${NETWORK_ATTACHMENT_NAME}\".\nThe network attachment must be in the same region as the instance.\n"
                }
            },
            "type": "object",
            "required": [
                "networkAttachmentResource"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceQueryInsightsConfig:getInstanceQueryInsightsConfig": {
            "properties": {
                "queryPlansPerMinute": {
                    "type": "integer",
                    "description": "Number of query execution plans captured by Insights per minute for all queries combined. The default value is 5. Any integer between 0 and 20 is considered valid.\n"
                },
                "queryStringLength": {
                    "type": "integer",
                    "description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid.\n"
                },
                "recordApplicationTags": {
                    "type": "boolean",
                    "description": "Record application tags for an instance. This flag is turned \"on\" by default.\n"
                },
                "recordClientAddress": {
                    "type": "boolean",
                    "description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default.\n"
                }
            },
            "type": "object",
            "required": [
                "queryPlansPerMinute",
                "queryStringLength",
                "recordApplicationTags",
                "recordClientAddress"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getInstanceReadPoolConfig:getInstanceReadPoolConfig": {
            "properties": {
                "nodeCount": {
                    "type": "integer",
                    "description": "Read capacity, i.e. number of nodes in a read pool instance.\n"
                }
            },
            "type": "object",
            "required": [
                "nodeCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getLocationsLocation:getLocationsLocation": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Cross-service attributes for the location. For example `{\"cloud.googleapis.com/region\": \"us-east1\"}`.\n"
                },
                "locationId": {
                    "type": "string",
                    "description": "The canonical id for this location. For example: \"us-east1\"..\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Service-specific metadata. For example the available capacity at the given location.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\".\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "labels",
                "locationId",
                "metadata",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getSupportedDatabaseFlagsSupportedDatabaseFlag:getSupportedDatabaseFlagsSupportedDatabaseFlag": {
            "properties": {
                "acceptsMultipleValues": {
                    "type": "boolean",
                    "description": "Whether the database flag accepts multiple values. If true, a comma-separated list of stringified values may be specified.\n"
                },
                "flagName": {
                    "type": "string",
                    "description": "The name of the database flag, e.g. \u003cspan pulumi-lang-nodejs=\"\"maxAllowedPackets\"\" pulumi-lang-dotnet=\"\"MaxAllowedPackets\"\" pulumi-lang-go=\"\"maxAllowedPackets\"\" pulumi-lang-python=\"\"max_allowed_packets\"\" pulumi-lang-yaml=\"\"maxAllowedPackets\"\" pulumi-lang-java=\"\"maxAllowedPackets\"\" pulumi-lang-hcl=\"\"max_allowed_packets\"\"\u003e\"maxAllowedPackets\"\u003c/span\u003e. The is a possibly key for the Instance.database_flags map field.\n"
                },
                "integerRestrictions": {
                    "$ref": "#/types/gcp:alloydb/getSupportedDatabaseFlagsSupportedDatabaseFlagIntegerRestrictions:getSupportedDatabaseFlagsSupportedDatabaseFlagIntegerRestrictions",
                    "description": "Restriction on `INTEGER` type value. Specifies the minimum value and the maximum value that can be specified, if applicable.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the flag resource, following Google Cloud conventions, e.g.: * projects/{project}/locations/{location}/flags/{flag} This field currently has no semantic meaning.\n"
                },
                "requiresDbRestart": {
                    "type": "boolean",
                    "description": "Whether setting or updating this flag on an Instance requires a database restart. If a flag that requires database restart is set, the backend will automatically restart the database (making sure to satisfy any availability SLO's).\n"
                },
                "stringRestrictions": {
                    "$ref": "#/types/gcp:alloydb/getSupportedDatabaseFlagsSupportedDatabaseFlagStringRestrictions:getSupportedDatabaseFlagsSupportedDatabaseFlagStringRestrictions",
                    "description": "Restriction on `STRING` type value. The list of allowed values, if bounded. This field will be empty if there is a unbounded number of allowed values.\n"
                },
                "supportedDbVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Major database engine versions for which this flag is supported. The supported values are `POSTGRES_14` and `DATABASE_VERSION_UNSPECIFIED`.\n"
                },
                "valueType": {
                    "type": "string",
                    "description": "ValueType describes the semantic type of the value that the flag accepts. Regardless of the ValueType, the Instance.database_flags field accepts the stringified version of the value, i.e. \"20\" or \"3.14\". The supported values are `VALUE_TYPE_UNSPECIFIED`, `STRING`, `INTEGER`, `FLOAT` and `NONE`.\n"
                }
            },
            "type": "object",
            "required": [
                "acceptsMultipleValues",
                "flagName",
                "integerRestrictions",
                "name",
                "requiresDbRestart",
                "stringRestrictions",
                "supportedDbVersions",
                "valueType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getSupportedDatabaseFlagsSupportedDatabaseFlagIntegerRestrictions:getSupportedDatabaseFlagsSupportedDatabaseFlagIntegerRestrictions": {
            "properties": {
                "maxValue": {
                    "type": "string",
                    "description": "The maximum value that can be specified, if applicable.\n"
                },
                "minValue": {
                    "type": "string",
                    "description": "The minimum value that can be specified, if applicable.\n"
                }
            },
            "type": "object",
            "required": [
                "maxValue",
                "minValue"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:alloydb/getSupportedDatabaseFlagsSupportedDatabaseFlagStringRestrictions:getSupportedDatabaseFlagsSupportedDatabaseFlagStringRestrictions": {
            "properties": {
                "allowedValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of allowed values, if bounded. This field will be empty if there is a unbounded number of allowed values.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedValues"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apigateway/ApiConfigGatewayConfig:ApiConfigGatewayConfig": {
            "properties": {
                "backendConfig": {
                    "$ref": "#/types/gcp:apigateway/ApiConfigGatewayConfigBackendConfig:ApiConfigGatewayConfigBackendConfig",
                    "description": "Backend settings that are applied to all backends of the Gateway.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "backendConfig"
            ]
        },
        "gcp:apigateway/ApiConfigGatewayConfigBackendConfig:ApiConfigGatewayConfigBackendConfig": {
            "properties": {
                "googleServiceAccount": {
                    "type": "string",
                    "description": "Google Cloud IAM service account used to sign OIDC tokens for backends that have authentication configured\n(https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services.configs#backend).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "googleServiceAccount"
            ]
        },
        "gcp:apigateway/ApiConfigGrpcService:ApiConfigGrpcService": {
            "properties": {
                "fileDescriptorSet": {
                    "$ref": "#/types/gcp:apigateway/ApiConfigGrpcServiceFileDescriptorSet:ApiConfigGrpcServiceFileDescriptorSet",
                    "description": "Input only. File descriptor set, generated by protoc.\nTo generate, use protoc with imports and source info included. For an example test.proto file, the following command would put the value in a new file named out.pb.\n$ protoc --include_imports --include_source_info test.proto -o out.pb\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigateway/ApiConfigGrpcServiceSource:ApiConfigGrpcServiceSource"
                    },
                    "description": "Uncompiled proto files associated with the descriptor set, used for display purposes (server-side compilation is not supported). These should match the inputs to 'protoc' command used to generate fileDescriptorSet.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "fileDescriptorSet"
            ]
        },
        "gcp:apigateway/ApiConfigGrpcServiceFileDescriptorSet:ApiConfigGrpcServiceFileDescriptorSet": {
            "properties": {
                "contents": {
                    "type": "string",
                    "description": "Base64 encoded content of the file.\n",
                    "willReplaceOnChanges": true
                },
                "path": {
                    "type": "string",
                    "description": "The file path (full or relative path). This is typically the path of the file when it is uploaded.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "contents",
                "path"
            ]
        },
        "gcp:apigateway/ApiConfigGrpcServiceSource:ApiConfigGrpcServiceSource": {
            "properties": {
                "contents": {
                    "type": "string",
                    "description": "Base64 encoded content of the file.\n",
                    "willReplaceOnChanges": true
                },
                "path": {
                    "type": "string",
                    "description": "The file path (full or relative path). This is typically the path of the file when it is uploaded.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "contents",
                "path"
            ]
        },
        "gcp:apigateway/ApiConfigIamBindingCondition:ApiConfigIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:apigateway/ApiConfigIamMemberCondition:ApiConfigIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:apigateway/ApiConfigManagedServiceConfig:ApiConfigManagedServiceConfig": {
            "properties": {
                "contents": {
                    "type": "string",
                    "description": "Base64 encoded content of the file.\n",
                    "willReplaceOnChanges": true
                },
                "path": {
                    "type": "string",
                    "description": "The file path (full or relative path). This is typically the path of the file when it is uploaded.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "contents",
                "path"
            ]
        },
        "gcp:apigateway/ApiConfigOpenapiDocument:ApiConfigOpenapiDocument": {
            "properties": {
                "document": {
                    "$ref": "#/types/gcp:apigateway/ApiConfigOpenapiDocumentDocument:ApiConfigOpenapiDocumentDocument",
                    "description": "The OpenAPI Specification document file.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "document"
            ]
        },
        "gcp:apigateway/ApiConfigOpenapiDocumentDocument:ApiConfigOpenapiDocumentDocument": {
            "properties": {
                "contents": {
                    "type": "string",
                    "description": "Base64 encoded content of the file.\n",
                    "willReplaceOnChanges": true
                },
                "path": {
                    "type": "string",
                    "description": "The file path (full or relative path). This is typically the path of the file when it is uploaded.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "contents",
                "path"
            ]
        },
        "gcp:apigateway/ApiIamBindingCondition:ApiIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:apigateway/ApiIamMemberCondition:ApiIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:apigateway/GatewayIamBindingCondition:GatewayIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:apigateway/GatewayIamMemberCondition:GatewayIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:apigee/AddonsConfigAddonsConfig:AddonsConfigAddonsConfig": {
            "properties": {
                "advancedApiOpsConfig": {
                    "$ref": "#/types/gcp:apigee/AddonsConfigAddonsConfigAdvancedApiOpsConfig:AddonsConfigAddonsConfigAdvancedApiOpsConfig",
                    "description": "Configuration for the Advanced API Ops add-on.\nStructure is documented below.\n"
                },
                "apiSecurityConfig": {
                    "$ref": "#/types/gcp:apigee/AddonsConfigAddonsConfigApiSecurityConfig:AddonsConfigAddonsConfigApiSecurityConfig",
                    "description": "Configuration for the API Security add-on.\nStructure is documented below.\n"
                },
                "connectorsPlatformConfig": {
                    "$ref": "#/types/gcp:apigee/AddonsConfigAddonsConfigConnectorsPlatformConfig:AddonsConfigAddonsConfigConnectorsPlatformConfig",
                    "description": "Configuration for the Monetization add-on.\nStructure is documented below.\n"
                },
                "integrationConfig": {
                    "$ref": "#/types/gcp:apigee/AddonsConfigAddonsConfigIntegrationConfig:AddonsConfigAddonsConfigIntegrationConfig",
                    "description": "Configuration for the Integration add-on.\nStructure is documented below.\n"
                },
                "monetizationConfig": {
                    "$ref": "#/types/gcp:apigee/AddonsConfigAddonsConfigMonetizationConfig:AddonsConfigAddonsConfigMonetizationConfig",
                    "description": "Configuration for the Monetization add-on.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/AddonsConfigAddonsConfigAdvancedApiOpsConfig:AddonsConfigAddonsConfigAdvancedApiOpsConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Flag that specifies whether the Advanced API Ops add-on is enabled.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/AddonsConfigAddonsConfigApiSecurityConfig:AddonsConfigAddonsConfigApiSecurityConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Flag that specifies whether the API security add-on is enabled.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "(Output)\nTime at which the API Security add-on expires in in milliseconds since epoch. If unspecified, the add-on will never expire.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "expiresAt"
                    ]
                }
            }
        },
        "gcp:apigee/AddonsConfigAddonsConfigConnectorsPlatformConfig:AddonsConfigAddonsConfigConnectorsPlatformConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Flag that specifies whether the Connectors Platform add-on is enabled.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "(Output)\nTime at which the Connectors Platform add-on expires in milliseconds since epoch. If unspecified, the add-on will never expire.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "expiresAt"
                    ]
                }
            }
        },
        "gcp:apigee/AddonsConfigAddonsConfigIntegrationConfig:AddonsConfigAddonsConfigIntegrationConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Flag that specifies whether the Integration add-on is enabled.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/AddonsConfigAddonsConfigMonetizationConfig:AddonsConfigAddonsConfigMonetizationConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Flag that specifies whether the Monetization add-on is enabled.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiMetaData:ApiMetaData": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Time at which the API proxy was created, in milliseconds since epoch.\n"
                },
                "lastModifiedAt": {
                    "type": "string",
                    "description": "Time at which the API proxy was most recently modified, in milliseconds since epoch.\n"
                },
                "subType": {
                    "type": "string",
                    "description": "The type of entity described\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "lastModifiedAt",
                        "subType"
                    ]
                }
            }
        },
        "gcp:apigee/ApiProductAttribute:ApiProductAttribute": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Key of the attribute.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the attribute.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGraphqlOperationGroup:ApiProductGraphqlOperationGroup": {
            "properties": {
                "operationConfigType": {
                    "type": "string",
                    "description": "Flag that specifes whether the configuration is for Apigee API proxy or a remote service. Valid values include proxy or remoteservice. Defaults to proxy. Set to proxy when Apigee API proxies are associated with the API product. Set to remoteservice when non-Apigee proxies like Istio-Envoy are associated with the API product.\nPossible values are: \u003cspan pulumi-lang-nodejs=\"`proxy`\" pulumi-lang-dotnet=\"`Proxy`\" pulumi-lang-go=\"`proxy`\" pulumi-lang-python=\"`proxy`\" pulumi-lang-yaml=\"`proxy`\" pulumi-lang-java=\"`proxy`\" pulumi-lang-hcl=\"`proxy`\"\u003e`proxy`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`remoteservice`\" pulumi-lang-dotnet=\"`Remoteservice`\" pulumi-lang-go=\"`remoteservice`\" pulumi-lang-python=\"`remoteservice`\" pulumi-lang-yaml=\"`remoteservice`\" pulumi-lang-java=\"`remoteservice`\" pulumi-lang-hcl=\"`remoteservice`\"\u003e`remoteservice`\u003c/span\u003e.\n"
                },
                "operationConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/ApiProductGraphqlOperationGroupOperationConfig:ApiProductGraphqlOperationGroupOperationConfig"
                    },
                    "description": "List of graphQL operation configuration details associated with Apigee API proxies or remote services. Remote services are non-Apigee proxies, such as Istio-Envoy.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGraphqlOperationGroupOperationConfig:ApiProductGraphqlOperationGroupOperationConfig": {
            "properties": {
                "apiSource": {
                    "type": "string",
                    "description": "Required. Name of the API proxy with which the gRPC operation and quota are associated.\n"
                },
                "attributes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/ApiProductGraphqlOperationGroupOperationConfigAttribute:ApiProductGraphqlOperationGroupOperationConfigAttribute"
                    },
                    "description": "Custom attributes associated with the operation.\nStructure is documented below.\n"
                },
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/ApiProductGraphqlOperationGroupOperationConfigOperation:ApiProductGraphqlOperationGroupOperationConfigOperation"
                    },
                    "description": "Required. List of GraphQL name/operation type pairs for the proxy or remote service to which quota will be applied. If only operation types are specified, the quota will be applied to all GraphQL requests irrespective of the GraphQL name.\nNote: Currently, you can specify only a single GraphQLOperation. Specifying more than one will cause the operation to fail.\nStructure is documented below.\n"
                },
                "quota": {
                    "$ref": "#/types/gcp:apigee/ApiProductGraphqlOperationGroupOperationConfigQuota:ApiProductGraphqlOperationGroupOperationConfigQuota",
                    "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGraphqlOperationGroupOperationConfigAttribute:ApiProductGraphqlOperationGroupOperationConfigAttribute": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Key of the attribute.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the attribute.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGraphqlOperationGroupOperationConfigOperation:ApiProductGraphqlOperationGroupOperationConfigOperation": {
            "properties": {
                "operation": {
                    "type": "string",
                    "description": "GraphQL operation name. The name and operation type will be used to apply quotas. If no name is specified, the quota will be applied to all GraphQL operations irrespective of their operation names in the payload.\n"
                },
                "operationTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. GraphQL operation types. Valid values include query or mutation.\nNote: Apigee does not currently support subscription types.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGraphqlOperationGroupOperationConfigQuota:ApiProductGraphqlOperationGroupOperationConfigQuota": {
            "properties": {
                "interval": {
                    "type": "string",
                    "description": "Required. Time interval over which the number of request messages is calculated.\n"
                },
                "limit": {
                    "type": "string",
                    "description": "Required. Upper limit allowed for the time interval and time unit specified. Requests exceeding this limit will be rejected.\n"
                },
                "timeUnit": {
                    "type": "string",
                    "description": "Time unit defined for the interval. Valid values include second, minute, hour, day, month or year. If limit and interval are valid, the default value is hour; otherwise, the default is null.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGrpcOperationGroup:ApiProductGrpcOperationGroup": {
            "properties": {
                "operationConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/ApiProductGrpcOperationGroupOperationConfig:ApiProductGrpcOperationGroupOperationConfig"
                    },
                    "description": "Required. List of operation configurations for either Apigee API proxies that are associated with this API product.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGrpcOperationGroupOperationConfig:ApiProductGrpcOperationGroupOperationConfig": {
            "properties": {
                "apiSource": {
                    "type": "string",
                    "description": "Required. Name of the API proxy with which the gRPC operation and quota are associated.\n"
                },
                "attributes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/ApiProductGrpcOperationGroupOperationConfigAttribute:ApiProductGrpcOperationGroupOperationConfigAttribute"
                    },
                    "description": "Custom attributes associated with the operation.\nStructure is documented below.\n"
                },
                "methods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of unqualified gRPC method names for the proxy to which quota will be applied. If this field is empty, the Quota will apply to all operations on the gRPC service defined on the proxy.\nExample: Given a proxy that is configured to serve com.petstore.PetService, the methods com.petstore.PetService.ListPets and com.petstore.PetService.GetPet would be specified here as simply [\"ListPets\", \"GetPet\"].\nNote: Currently, you can specify only a single GraphQLOperation. Specifying more than one will cause the operation to fail.\n"
                },
                "quota": {
                    "$ref": "#/types/gcp:apigee/ApiProductGrpcOperationGroupOperationConfigQuota:ApiProductGrpcOperationGroupOperationConfigQuota",
                    "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done.\nStructure is documented below.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Required. gRPC Service name associated to be associated with the API proxy, on which quota rules can be applied upon.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGrpcOperationGroupOperationConfigAttribute:ApiProductGrpcOperationGroupOperationConfigAttribute": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Key of the attribute.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the attribute.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductGrpcOperationGroupOperationConfigQuota:ApiProductGrpcOperationGroupOperationConfigQuota": {
            "properties": {
                "interval": {
                    "type": "string",
                    "description": "Required. Time interval over which the number of request messages is calculated.\n"
                },
                "limit": {
                    "type": "string",
                    "description": "Required. Upper limit allowed for the time interval and time unit specified. Requests exceeding this limit will be rejected.\n"
                },
                "timeUnit": {
                    "type": "string",
                    "description": "Time unit defined for the interval. Valid values include second, minute, hour, day, month or year. If limit and interval are valid, the default value is hour; otherwise, the default is null.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductOperationGroup:ApiProductOperationGroup": {
            "properties": {
                "operationConfigType": {
                    "type": "string",
                    "description": "Flag that specifes whether the configuration is for Apigee API proxy or a remote service. Valid values include proxy or remoteservice. Defaults to proxy. Set to proxy when Apigee API proxies are associated with the API product. Set to remoteservice when non-Apigee proxies like Istio-Envoy are associated with the API product.\nPossible values are: \u003cspan pulumi-lang-nodejs=\"`proxy`\" pulumi-lang-dotnet=\"`Proxy`\" pulumi-lang-go=\"`proxy`\" pulumi-lang-python=\"`proxy`\" pulumi-lang-yaml=\"`proxy`\" pulumi-lang-java=\"`proxy`\" pulumi-lang-hcl=\"`proxy`\"\u003e`proxy`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`remoteservice`\" pulumi-lang-dotnet=\"`Remoteservice`\" pulumi-lang-go=\"`remoteservice`\" pulumi-lang-python=\"`remoteservice`\" pulumi-lang-yaml=\"`remoteservice`\" pulumi-lang-java=\"`remoteservice`\" pulumi-lang-hcl=\"`remoteservice`\"\u003e`remoteservice`\u003c/span\u003e.\n"
                },
                "operationConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/ApiProductOperationGroupOperationConfig:ApiProductOperationGroupOperationConfig"
                    },
                    "description": "Required. List of operation configurations for either Apigee API proxies or other remote services that are associated with this API product.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductOperationGroupOperationConfig:ApiProductOperationGroupOperationConfig": {
            "properties": {
                "apiSource": {
                    "type": "string",
                    "description": "Required. Name of the API proxy with which the gRPC operation and quota are associated.\n"
                },
                "attributes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/ApiProductOperationGroupOperationConfigAttribute:ApiProductOperationGroupOperationConfigAttribute"
                    },
                    "description": "Custom attributes associated with the operation.\nStructure is documented below.\n"
                },
                "operations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/ApiProductOperationGroupOperationConfigOperation:ApiProductOperationGroupOperationConfigOperation"
                    },
                    "description": "Required. List of GraphQL name/operation type pairs for the proxy or remote service to which quota will be applied. If only operation types are specified, the quota will be applied to all GraphQL requests irrespective of the GraphQL name.\nNote: Currently, you can specify only a single GraphQLOperation. Specifying more than one will cause the operation to fail.\nStructure is documented below.\n"
                },
                "quota": {
                    "$ref": "#/types/gcp:apigee/ApiProductOperationGroupOperationConfigQuota:ApiProductOperationGroupOperationConfigQuota",
                    "description": "Quota parameters to be enforced for the resources, methods, and API source combination. If none are specified, quota enforcement will not be done.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductOperationGroupOperationConfigAttribute:ApiProductOperationGroupOperationConfigAttribute": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Key of the attribute.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the attribute.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductOperationGroupOperationConfigOperation:ApiProductOperationGroupOperationConfigOperation": {
            "properties": {
                "methods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Methods refers to the REST verbs, when none specified, all verb types are allowed.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "Required. REST resource path associated with the API proxy or remote service.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/ApiProductOperationGroupOperationConfigQuota:ApiProductOperationGroupOperationConfigQuota": {
            "properties": {
                "interval": {
                    "type": "string",
                    "description": "Required. Time interval over which the number of request messages is calculated.\n"
                },
                "limit": {
                    "type": "string",
                    "description": "Required. Upper limit allowed for the time interval and time unit specified. Requests exceeding this limit will be rejected.\n"
                },
                "timeUnit": {
                    "type": "string",
                    "description": "Time unit defined for the interval. Valid values include second, minute, hour, day, month or year. If limit and interval are valid, the default value is hour; otherwise, the default is null.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/AppGroupAttribute:AppGroupAttribute": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Key of the attribute\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the attribute\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/DatastoreDatastoreConfig:DatastoreDatastoreConfig": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the Cloud Storage bucket. Required for \u003cspan pulumi-lang-nodejs=\"`gcs`\" pulumi-lang-dotnet=\"`Gcs`\" pulumi-lang-go=\"`gcs`\" pulumi-lang-python=\"`gcs`\" pulumi-lang-yaml=\"`gcs`\" pulumi-lang-java=\"`gcs`\" pulumi-lang-hcl=\"`gcs`\"\u003e`gcs`\u003c/span\u003e target type.\n"
                },
                "datasetName": {
                    "type": "string",
                    "description": "The name of the BigQuery dataset. Required for \u003cspan pulumi-lang-nodejs=\"`bigquery`\" pulumi-lang-dotnet=\"`Bigquery`\" pulumi-lang-go=\"`bigquery`\" pulumi-lang-python=\"`bigquery`\" pulumi-lang-yaml=\"`bigquery`\" pulumi-lang-java=\"`bigquery`\" pulumi-lang-hcl=\"`bigquery`\"\u003e`bigquery`\u003c/span\u003e target type.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The path within the Cloud Storage bucket. Used for \u003cspan pulumi-lang-nodejs=\"`gcs`\" pulumi-lang-dotnet=\"`Gcs`\" pulumi-lang-go=\"`gcs`\" pulumi-lang-python=\"`gcs`\" pulumi-lang-yaml=\"`gcs`\" pulumi-lang-java=\"`gcs`\" pulumi-lang-hcl=\"`gcs`\"\u003e`gcs`\u003c/span\u003e target type.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The GCP project ID that the datastore target resides in.\n"
                },
                "tablePrefix": {
                    "type": "string",
                    "description": "The prefix for BigQuery table names. Used for \u003cspan pulumi-lang-nodejs=\"`bigquery`\" pulumi-lang-dotnet=\"`Bigquery`\" pulumi-lang-go=\"`bigquery`\" pulumi-lang-python=\"`bigquery`\" pulumi-lang-yaml=\"`bigquery`\" pulumi-lang-java=\"`bigquery`\" pulumi-lang-hcl=\"`bigquery`\"\u003e`bigquery`\u003c/span\u003e target type.\n"
                }
            },
            "type": "object",
            "required": [
                "projectId"
            ]
        },
        "gcp:apigee/DeveloperAppAttribute:DeveloperAppAttribute": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Key of the attribute\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the attribute\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/DeveloperAppCredential:DeveloperAppCredential": {
            "properties": {
                "apiProducts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/DeveloperAppCredentialApiProduct:DeveloperAppCredentialApiProduct"
                    },
                    "description": "List of API products associated with the developer app.\n"
                },
                "attributes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/DeveloperAppCredentialAttribute:DeveloperAppCredentialAttribute"
                    },
                    "description": "Developer attributes (name/value pairs). The custom attribute limit is 18.\nStructure is documented below.\n"
                },
                "consumerKey": {
                    "type": "string",
                    "description": "Optionally specify a static consumer key for the developer app's credential.\nIf not set, the API auto-generates a key. The consumer key must be unique\nacross all developer apps in an organization. Changing this field forces the\nresource to be recreated.\nThis is a write-only input used at create time: the provider creates the\ncredential with this key via the keys API and removes the auto-generated\none. The effective key is exposed in the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\" pulumi-lang-hcl=\"`credentials`\"\u003e`credentials`\u003c/span\u003e output.\n"
                },
                "consumerSecret": {
                    "type": "string",
                    "description": "Optionally specify a static consumer secret for the developer app's\ncredential. Required if \u003cspan pulumi-lang-nodejs=\"`consumerKey`\" pulumi-lang-dotnet=\"`ConsumerKey`\" pulumi-lang-go=\"`consumerKey`\" pulumi-lang-python=\"`consumer_key`\" pulumi-lang-yaml=\"`consumerKey`\" pulumi-lang-java=\"`consumerKey`\" pulumi-lang-hcl=\"`consumer_key`\"\u003e`consumerKey`\u003c/span\u003e is specified. If not set, the API\nauto-generates a secret. Changing this field forces the resource to be\nrecreated.\nThis is a write-only input used at create time; the effective secret is\nexposed in the \u003cspan pulumi-lang-nodejs=\"`credentials`\" pulumi-lang-dotnet=\"`Credentials`\" pulumi-lang-go=\"`credentials`\" pulumi-lang-python=\"`credentials`\" pulumi-lang-yaml=\"`credentials`\" pulumi-lang-java=\"`credentials`\" pulumi-lang-hcl=\"`credentials`\"\u003e`credentials`\u003c/span\u003e output.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "expiresAt": {
                    "type": "string",
                    "description": "(Output)\nTime the credential will expire in milliseconds since epoch.\n"
                },
                "issuedAt": {
                    "type": "string",
                    "description": "(Output)\nTime the credential was issued in milliseconds since epoch.\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Scopes to apply to the developer app.\nThe specified scopes must already exist for the API product that\nyou associate with the developer app.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the credential. Valid values include approved or revoked.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiProducts",
                        "attributes",
                        "consumerKey",
                        "consumerSecret",
                        "expiresAt",
                        "issuedAt",
                        "scopes",
                        "status"
                    ]
                }
            }
        },
        "gcp:apigee/DeveloperAppCredentialApiProduct:DeveloperAppCredentialApiProduct": {
            "properties": {
                "apiproduct": {
                    "type": "string",
                    "description": "(Output)\nName of the API product.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the credential. Valid values include approved or revoked.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiproduct",
                        "status"
                    ]
                }
            }
        },
        "gcp:apigee/DeveloperAppCredentialAttribute:DeveloperAppCredentialAttribute": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Key of the attribute\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the attribute\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "value"
                    ]
                }
            }
        },
        "gcp:apigee/DeveloperAttribute:DeveloperAttribute": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Key of the attribute\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the attribute\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/DnsZonePeeringConfig:DnsZonePeeringConfig": {
            "properties": {
                "targetNetworkId": {
                    "type": "string",
                    "description": "The name of the producer VPC network.\n",
                    "willReplaceOnChanges": true
                },
                "targetProjectId": {
                    "type": "string",
                    "description": "The ID of the project that contains the producer VPC network.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "targetNetworkId",
                "targetProjectId"
            ]
        },
        "gcp:apigee/EnvironmentClientIpResolutionConfig:EnvironmentClientIpResolutionConfig": {
            "properties": {
                "headerIndexAlgorithm": {
                    "$ref": "#/types/gcp:apigee/EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm:EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm",
                    "description": "Resolves the client ip based on a custom header.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm:EnvironmentClientIpResolutionConfigHeaderIndexAlgorithm": {
            "properties": {
                "ipHeaderIndex": {
                    "type": "integer",
                    "description": "The index of the ip in the header. Positive indices 0, 1, 2, 3 chooses indices from the left (first ips). Negative indices -1, -2, -3 chooses indices from the right (last ips).\n"
                },
                "ipHeaderName": {
                    "type": "string",
                    "description": "The name of the header to extract the client ip from. We are currently only supporting the X-Forwarded-For header.\n"
                }
            },
            "type": "object",
            "required": [
                "ipHeaderIndex",
                "ipHeaderName"
            ]
        },
        "gcp:apigee/EnvironmentIamBindingCondition:EnvironmentIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:apigee/EnvironmentIamMemberCondition:EnvironmentIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:apigee/EnvironmentNodeConfig:EnvironmentNodeConfig": {
            "properties": {
                "currentAggregateNodeCount": {
                    "type": "string",
                    "description": "(Output)\nThe current total number of gateway nodes that each environment currently has across\nall instances.\n"
                },
                "maxNodeCount": {
                    "type": "string",
                    "description": "The maximum total number of gateway nodes that the is reserved for all instances that\nhas the specified environment. If not specified, the default is determined by the\nrecommended maximum number of nodes for that gateway.\n"
                },
                "minNodeCount": {
                    "type": "string",
                    "description": "The minimum total number of gateway nodes that the is reserved for all instances that\nhas the specified environment. If not specified, the default is determined by the\nrecommended minimum number of nodes for that gateway.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "currentAggregateNodeCount"
                    ]
                }
            }
        },
        "gcp:apigee/EnvironmentProperties:EnvironmentProperties": {
            "properties": {
                "properties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/EnvironmentPropertiesProperty:EnvironmentPropertiesProperty"
                    },
                    "description": "List of all properties in the object.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/EnvironmentPropertiesProperty:EnvironmentPropertiesProperty": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The property key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The property value.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/InstanceAccessLoggingConfig:InstanceAccessLoggingConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag that specifies whether the customer access log feature is enabled.\n",
                    "willReplaceOnChanges": true
                },
                "filter": {
                    "type": "string",
                    "description": "Ship the access log entries that match the statusCode defined in the filter.\nThe statusCode is the only expected/supported filter field. (Ex: statusCode)\nThe filter will parse it to the Common Expression Language semantics for expression\nevaluation to build the filter condition. (Ex: \"filter\": statusCode \u003e= 200 \u0026\u0026 statusCode \u003c 300 )\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:apigee/KeystoresAliasesKeyCertFileCertsInfo:KeystoresAliasesKeyCertFileCertsInfo": {
            "properties": {
                "basicConstraints": {
                    "type": "string",
                    "description": "(Output)\nX.509 basic constraints extension.\n"
                },
                "expiryDate": {
                    "type": "string",
                    "description": "(Output)\nX.509 notAfter validity period in milliseconds since epoch.\n"
                },
                "isValid": {
                    "type": "string",
                    "description": "(Output)\nFlag that specifies whether the certificate is valid.\nFlag is set to Yes if the certificate is valid, No if expired, or Not yet if not yet valid.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "(Output)\nX.509 issuer.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "(Output)\nPublic key component of the X.509 subject public key info.\n"
                },
                "serialNumber": {
                    "type": "string",
                    "description": "(Output)\nX.509 serial number.\n"
                },
                "sigAlgName": {
                    "type": "string",
                    "description": "(Output)\nX.509 signatureAlgorithm.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "(Output)\nX.509 subject.\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nX.509 subject alternative names (SANs) extension.\n"
                },
                "validFrom": {
                    "type": "string",
                    "description": "(Output)\nX.509 notBefore validity period in milliseconds since epoch.\n"
                },
                "version": {
                    "type": "integer",
                    "description": "(Output)\nX.509 version.\n"
                }
            },
            "type": "object",
            "required": [
                "basicConstraints",
                "expiryDate",
                "isValid",
                "issuer",
                "publicKey",
                "serialNumber",
                "sigAlgName",
                "subject",
                "subjectAlternativeNames",
                "validFrom",
                "version"
            ]
        },
        "gcp:apigee/KeystoresAliasesKeyCertFileTimeouts:KeystoresAliasesKeyCertFileTimeouts": {
            "properties": {
                "create": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
                },
                "delete": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"
                },
                "read": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"
                },
                "update": {
                    "type": "string",
                    "description": "A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/KeystoresAliasesPkcs12CertsInfo:KeystoresAliasesPkcs12CertsInfo": {
            "properties": {
                "certInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/KeystoresAliasesPkcs12CertsInfoCertInfo:KeystoresAliasesPkcs12CertsInfoCertInfo"
                    },
                    "description": "(Output)\nList of all properties in the object.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "certInfos"
                    ]
                }
            }
        },
        "gcp:apigee/KeystoresAliasesPkcs12CertsInfoCertInfo:KeystoresAliasesPkcs12CertsInfoCertInfo": {
            "properties": {
                "basicConstraints": {
                    "type": "string",
                    "description": "(Output)\nX.509 basic constraints extension.\n"
                },
                "expiryDate": {
                    "type": "string",
                    "description": "(Output)\nX.509 notAfter validity period in milliseconds since epoch.\n"
                },
                "isValid": {
                    "type": "string",
                    "description": "(Output)\nFlag that specifies whether the certificate is valid.\nFlag is set to Yes if the certificate is valid, No if expired, or Not yet if not yet valid.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "(Output)\nX.509 issuer.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "(Output)\nPublic key component of the X.509 subject public key info.\n"
                },
                "serialNumber": {
                    "type": "string",
                    "description": "(Output)\nX.509 serial number.\n"
                },
                "sigAlgName": {
                    "type": "string",
                    "description": "(Output)\nX.509 signatureAlgorithm.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "(Output)\nX.509 subject.\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nX.509 subject alternative names (SANs) extension.\n"
                },
                "validFrom": {
                    "type": "string",
                    "description": "(Output)\nX.509 notBefore validity period in milliseconds since epoch.\n"
                },
                "version": {
                    "type": "integer",
                    "description": "(Output)\nX.509 version.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "basicConstraints",
                        "expiryDate",
                        "isValid",
                        "issuer",
                        "publicKey",
                        "serialNumber",
                        "sigAlgName",
                        "subject",
                        "subjectAlternativeNames",
                        "validFrom",
                        "version"
                    ]
                }
            }
        },
        "gcp:apigee/KeystoresAliasesSelfSignedCertCertsInfo:KeystoresAliasesSelfSignedCertCertsInfo": {
            "properties": {
                "certInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/KeystoresAliasesSelfSignedCertCertsInfoCertInfo:KeystoresAliasesSelfSignedCertCertsInfoCertInfo"
                    },
                    "description": "(Output)\nList of all properties in the object.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "certInfos"
                    ]
                }
            }
        },
        "gcp:apigee/KeystoresAliasesSelfSignedCertCertsInfoCertInfo:KeystoresAliasesSelfSignedCertCertsInfoCertInfo": {
            "properties": {
                "basicConstraints": {
                    "type": "string",
                    "description": "(Output)\nX.509 basic constraints extension.\n"
                },
                "expiryDate": {
                    "type": "string",
                    "description": "(Output)\nX.509 notAfter validity period in milliseconds since epoch.\n"
                },
                "isValid": {
                    "type": "string",
                    "description": "(Output)\nFlag that specifies whether the certificate is valid.\nFlag is set to Yes if the certificate is valid, No if expired, or Not yet if not yet valid.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "(Output)\nX.509 issuer.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "(Output)\nPublic key component of the X.509 subject public key info.\n"
                },
                "serialNumber": {
                    "type": "string",
                    "description": "(Output)\nX.509 serial number.\n"
                },
                "sigAlgName": {
                    "type": "string",
                    "description": "(Output)\nX.509 signatureAlgorithm.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject details.\nStructure is documented below.\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nX.509 subject alternative names (SANs) extension.\n"
                },
                "validFrom": {
                    "type": "string",
                    "description": "(Output)\nX.509 notBefore validity period in milliseconds since epoch.\n"
                },
                "version": {
                    "type": "integer",
                    "description": "(Output)\nX.509 version.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "basicConstraints",
                        "expiryDate",
                        "isValid",
                        "issuer",
                        "publicKey",
                        "serialNumber",
                        "sigAlgName",
                        "subject",
                        "subjectAlternativeNames",
                        "validFrom",
                        "version"
                    ]
                }
            }
        },
        "gcp:apigee/KeystoresAliasesSelfSignedCertSubject:KeystoresAliasesSelfSignedCertSubject": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "Common name of the organization. Maximum length is 64 characters.\n",
                    "willReplaceOnChanges": true
                },
                "countryCode": {
                    "type": "string",
                    "description": "Two-letter country code. Example, IN for India, US for United States of America.\n",
                    "willReplaceOnChanges": true
                },
                "email": {
                    "type": "string",
                    "description": "Email address. Max 255 characters.\n",
                    "willReplaceOnChanges": true
                },
                "locality": {
                    "type": "string",
                    "description": "City or town name. Maximum length is 128 characters.\n",
                    "willReplaceOnChanges": true
                },
                "org": {
                    "type": "string",
                    "description": "Organization name. Maximum length is 64 characters.\n",
                    "willReplaceOnChanges": true
                },
                "orgUnit": {
                    "type": "string",
                    "description": "Organization team name. Maximum length is 64 characters.\n",
                    "willReplaceOnChanges": true
                },
                "state": {
                    "type": "string",
                    "description": "State or district name. Maximum length is 128 characters.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:apigee/KeystoresAliasesSelfSignedCertSubjectAlternativeDnsNames:KeystoresAliasesSelfSignedCertSubjectAlternativeDnsNames": {
            "properties": {
                "subjectAlternativeName": {
                    "type": "string",
                    "description": "Subject Alternative Name\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:apigee/OrganizationProperties:OrganizationProperties": {
            "properties": {
                "properties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/OrganizationPropertiesProperty:OrganizationPropertiesProperty"
                    },
                    "description": "List of all properties in the object.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/OrganizationPropertiesProperty:OrganizationPropertiesProperty": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the property.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the property.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/SecurityActionAllow:SecurityActionAllow": {
            "type": "object"
        },
        "gcp:apigee/SecurityActionConditionConfig:SecurityActionConditionConfig": {
            "properties": {
                "accessTokens": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of accessTokens. Limit 1000 per action.\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of API keys. Limit 1000 per action.\n"
                },
                "apiProducts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of API Products. Limit 1000 per action.\n"
                },
                "asns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of ASN numbers to act on, e.g. 23. https://en.wikipedia.org/wiki/Autonomous_system_(Internet)\nThis uses int64 instead of uint32 because of https://linter.aip.dev/141/forbidden-types.\n"
                },
                "botReasons": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of Bot Reasons. Current options: Flooder, Brute Guessor, Static Content Scraper,\nOAuth Abuser, Robot Abuser, TorListRule, Advanced Anomaly Detection, Advanced API Scraper,\nSearch Engine Crawlers, Public Clouds, Public Cloud AWS, Public Cloud Azure, and Public Cloud Google.\n"
                },
                "developerApps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of developer apps. Limit 1000 per action.\n"
                },
                "developers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of developers. Limit 1000 per action.\n"
                },
                "httpMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Act only on particular HTTP methods. E.g. A read-only API can block POST/PUT/DELETE methods.\nAccepted values are: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE and PATCH.\n"
                },
                "ipAddressRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IP addresses. This could be either IPv4 or IPv6. Limited to 100 per action.\n"
                },
                "regionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of countries/region codes to act on, e.g. US. This follows https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.\n"
                },
                "userAgents": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of user agents to deny. We look for exact matches. Limit 50 per action.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/SecurityActionDeny:SecurityActionDeny": {
            "properties": {
                "responseCode": {
                    "type": "integer",
                    "description": "The HTTP response code if the Action = DENY.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/SecurityActionFlag:SecurityActionFlag": {
            "properties": {
                "headers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apigee/SecurityActionFlagHeader:SecurityActionFlagHeader"
                    },
                    "description": "A list of HTTP headers to be sent to the target in case of a FLAG SecurityAction.\nLimit 5 headers per SecurityAction.\nAt least one is mandatory.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/SecurityActionFlagHeader:SecurityActionFlagHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The header name to be sent to the target.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header value to be sent to the target.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/SecurityFeedbackFeedbackContext:SecurityFeedbackFeedbackContext": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "The attribute the user is providing feedback about.\nPossible values are: `ATTRIBUTE_ENVIRONMENTS`, `ATTRIBUTE_IP_ADDRESS_RANGES`.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The values of the attribute the user is providing feedback about, separated by commas.\n"
                }
            },
            "type": "object",
            "required": [
                "attribute",
                "values"
            ]
        },
        "gcp:apigee/SecurityMonitoringConditionIncludeAllResources:SecurityMonitoringConditionIncludeAllResources": {
            "type": "object"
        },
        "gcp:apigee/SecurityProfileV2ProfileAssessmentConfig:SecurityProfileV2ProfileAssessmentConfig": {
            "properties": {
                "assessment": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "weight": {
                    "type": "string",
                    "description": "The weight of the assessment.\nPossible values are: `MINOR`, `MODERATE`, `MAJOR`.\n"
                }
            },
            "type": "object",
            "required": [
                "assessment",
                "weight"
            ]
        },
        "gcp:apigee/SharedflowMetaData:SharedflowMetaData": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Time at which the shared flow was created, in milliseconds since epoch.\n"
                },
                "lastModifiedAt": {
                    "type": "string",
                    "description": "Time at which the shared flow was most recently modified, in milliseconds since epoch.\n"
                },
                "subType": {
                    "type": "string",
                    "description": "The type of entity described\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "lastModifiedAt",
                        "subType"
                    ]
                }
            }
        },
        "gcp:apigee/TargetServerSSlInfo:TargetServerSSlInfo": {
            "properties": {
                "ciphers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The SSL/TLS cipher suites to be used. For programmable proxies, it must be one of the cipher suite names listed in: http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites. For configurable proxies, it must follow the configuration specified in: https://commondatastorage.googleapis.com/chromium-boringssl-docs/ssl.h.html#Cipher-suite-configuration. This setting has no effect for configurable proxies when negotiating TLS 1.3.\n"
                },
                "clientAuthEnabled": {
                    "type": "boolean",
                    "description": "Enables two-way TLS.\n"
                },
                "commonName": {
                    "$ref": "#/types/gcp:apigee/TargetServerSSlInfoCommonName:TargetServerSSlInfoCommonName",
                    "description": "The TLS Common Name of the certificate.\nStructure is documented below.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Enables TLS. If false, neither one-way nor two-way TLS will be enabled.\n"
                },
                "enforce": {
                    "type": "boolean",
                    "description": "If true, TLS is strictly enforced.\n"
                },
                "ignoreValidationErrors": {
                    "type": "boolean",
                    "description": "If true, Edge ignores TLS certificate errors. Valid when configuring TLS for target servers and target endpoints, and when configuring virtual hosts that use 2-way TLS. When used with a target endpoint/target server, if the backend system uses SNI and returns a cert with a subject Distinguished Name (DN) that does not match the hostname, there is no way to ignore the error and the connection fails.\n"
                },
                "keyAlias": {
                    "type": "string",
                    "description": "Required if clientAuthEnabled is true. The resource ID for the alias containing the private key and cert.\n"
                },
                "keyStore": {
                    "type": "string",
                    "description": "Required if clientAuthEnabled is true. The resource ID of the keystore.\n"
                },
                "protocols": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The TLS versioins to be used.\n"
                },
                "trustStore": {
                    "type": "string",
                    "description": "The resource ID of the truststore.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:apigee/TargetServerSSlInfoCommonName:TargetServerSSlInfoCommonName": {
            "properties": {
                "value": {
                    "type": "string",
                    "description": "The TLS Common Name string of the certificate.\n"
                },
                "wildcardMatch": {
                    "type": "boolean",
                    "description": "Indicates whether the cert should be matched against as a wildcard cert.\n"
                }
            },
            "type": "object"
        },
        "gcp:apigee/getInstanceAccessLoggingConfig:getInstanceAccessLoggingConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag that specifies whether the customer access log feature is enabled.\n"
                },
                "filter": {
                    "type": "string",
                    "description": "Ship the access log entries that match the statusCode defined in the filter.\nThe statusCode is the only expected/supported filter field. (Ex: statusCode)\nThe filter will parse it to the Common Expression Language semantics for expression\nevaluation to build the filter condition. (Ex: \"filter\": statusCode \u003e= 200 \u0026\u0026 statusCode \u003c 300 )\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "filter"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apihub/ApiHubInstanceConfig:ApiHubInstanceConfig": {
            "properties": {
                "cmekKeyName": {
                    "type": "string",
                    "description": "Optional. The Customer Managed Encryption Key (CMEK) used for data encryption.\nThe CMEK name should follow the format of\n`projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)`,\nwhere the location must match the instance location.\nIf the CMEK is not provided, a GMEK will be created for the instance.\n",
                    "willReplaceOnChanges": true
                },
                "disableSearch": {
                    "type": "boolean",
                    "description": "Optional. If true, the search will be disabled for the instance. The default value\nis false.\n",
                    "willReplaceOnChanges": true
                },
                "encryptionType": {
                    "type": "string",
                    "description": "Optional. Encryption type for the region. If the encryption type is CMEK, the\u003cspan pulumi-lang-nodejs=\"\ncmekKeyName \" pulumi-lang-dotnet=\"\nCmekKeyName \" pulumi-lang-go=\"\ncmekKeyName \" pulumi-lang-python=\"\ncmek_key_name \" pulumi-lang-yaml=\"\ncmekKeyName \" pulumi-lang-java=\"\ncmekKeyName \" pulumi-lang-hcl=\"\ncmek_key_name \"\u003e\ncmekKeyName \u003c/span\u003emust be provided. If no encryption type is provided,\nGMEK will be used.\nPossible values:\nENCRYPTION_TYPE_UNSPECIFIED\nGMEK\nCMEK\n",
                    "willReplaceOnChanges": true
                },
                "vertexLocation": {
                    "type": "string",
                    "description": "Optional. The name of the Vertex AI location where the data store is stored.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "encryptionType"
                    ]
                }
            }
        },
        "gcp:apihub/CurationEndpoint:CurationEndpoint": {
            "properties": {
                "applicationIntegrationEndpointDetails": {
                    "$ref": "#/types/gcp:apihub/CurationEndpointApplicationIntegrationEndpointDetails:CurationEndpointApplicationIntegrationEndpointDetails",
                    "description": "The details of the Application Integration endpoint to be triggered for\ncuration.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "applicationIntegrationEndpointDetails"
            ]
        },
        "gcp:apihub/CurationEndpointApplicationIntegrationEndpointDetails:CurationEndpointApplicationIntegrationEndpointDetails": {
            "properties": {
                "triggerId": {
                    "type": "string",
                    "description": "The API trigger ID of the Application Integration workflow.\n",
                    "willReplaceOnChanges": true
                },
                "uri": {
                    "type": "string",
                    "description": "The endpoint URI should be a valid REST URI for triggering an Application\nIntegration.\nFormat:\n`https://integrations.googleapis.com/v1/{name=projects/*/locations/*/integrations/*}:execute`\nor\n`https://{location}-integrations.googleapis.com/v1/{name=projects/*/locations/*/integrations/*}:execute`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "triggerId",
                "uri"
            ]
        },
        "gcp:apihub/CurationPluginInstanceAction:CurationPluginInstanceAction": {
            "properties": {
                "actionId": {
                    "type": "string",
                    "description": "(Output)\nThe action ID that is using the curation.\nThis should map to one of the action IDs specified\nin action configs in the plugin.\n"
                },
                "pluginInstance": {
                    "type": "string",
                    "description": "(Output)\nPlugin instance that is using the curation.\nFormat is\n`projects/{project}/locations/{locati on}/plugins/{plugin}/instances/{instance}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "actionId",
                        "pluginInstance"
                    ]
                }
            }
        },
        "gcp:apihub/PluginActionsConfig:PluginActionsConfig": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the operation performed by the action.\n",
                    "willReplaceOnChanges": true
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the action.\n",
                    "willReplaceOnChanges": true
                },
                "id": {
                    "type": "string",
                    "description": "The id of the action.\n",
                    "willReplaceOnChanges": true
                },
                "triggerMode": {
                    "type": "string",
                    "description": "The trigger mode supported by the action.\nPossible values:\nTRIGGER_MODE_UNSPECIFIED\nAPI_HUB_ON_DEMAND_TRIGGER\nAPI_HUB_SCHEDULE_TRIGGER\nNON_API_HUB_MANAGED\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "description",
                "displayName",
                "id",
                "triggerMode"
            ]
        },
        "gcp:apihub/PluginConfigTemplate:PluginConfigTemplate": {
            "properties": {
                "additionalConfigTemplates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apihub/PluginConfigTemplateAdditionalConfigTemplate:PluginConfigTemplateAdditionalConfigTemplate"
                    },
                    "description": "The list of additional configuration variables for the plugin's\nconfiguration.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "authConfigTemplate": {
                    "$ref": "#/types/gcp:apihub/PluginConfigTemplateAuthConfigTemplate:PluginConfigTemplateAuthConfigTemplate",
                    "description": "AuthConfigTemplate represents the authentication template for a plugin.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:apihub/PluginConfigTemplateAdditionalConfigTemplate:PluginConfigTemplateAdditionalConfigTemplate": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description.\n",
                    "willReplaceOnChanges": true
                },
                "enumOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apihub/PluginConfigTemplateAdditionalConfigTemplateEnumOption:PluginConfigTemplateAdditionalConfigTemplateEnumOption"
                    },
                    "description": "Enum options. To be populated if `ValueType` is `ENUM`.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "id": {
                    "type": "string",
                    "description": "ID of the config variable. Must be unique within the configuration.\n",
                    "willReplaceOnChanges": true
                },
                "multiSelectOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apihub/PluginConfigTemplateAdditionalConfigTemplateMultiSelectOption:PluginConfigTemplateAdditionalConfigTemplateMultiSelectOption"
                    },
                    "description": "Multi select options. To be populated if `ValueType` is `MULTI_SELECT`.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "required": {
                    "type": "boolean",
                    "description": "Flag represents that this `ConfigVariable` must be provided for a\nPluginInstance.\n",
                    "willReplaceOnChanges": true
                },
                "validationRegex": {
                    "type": "string",
                    "description": "Regular expression in RE2 syntax used for validating the \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\" pulumi-lang-hcl=\"`value`\"\u003e`value`\u003c/span\u003e of a\n`ConfigVariable`.\n",
                    "willReplaceOnChanges": true
                },
                "valueType": {
                    "type": "string",
                    "description": "Type of the parameter: string, int, bool etc.\nPossible values:\nVALUE_TYPE_UNSPECIFIED\nSTRING\nINT\nBOOL\nSECRET\nENUM\nMULTI_SELECT\nMULTI_STRING\nMULTI_INT\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "id",
                "valueType"
            ]
        },
        "gcp:apihub/PluginConfigTemplateAdditionalConfigTemplateEnumOption:PluginConfigTemplateAdditionalConfigTemplateEnumOption": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the option.\n",
                    "willReplaceOnChanges": true
                },
                "displayName": {
                    "type": "string",
                    "description": "Display name of the option.\n",
                    "willReplaceOnChanges": true
                },
                "id": {
                    "type": "string",
                    "description": "Id of the option.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "id"
            ]
        },
        "gcp:apihub/PluginConfigTemplateAdditionalConfigTemplateMultiSelectOption:PluginConfigTemplateAdditionalConfigTemplateMultiSelectOption": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the option.\n",
                    "willReplaceOnChanges": true
                },
                "displayName": {
                    "type": "string",
                    "description": "Display name of the option.\n",
                    "willReplaceOnChanges": true
                },
                "id": {
                    "type": "string",
                    "description": "Id of the option.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "id"
            ]
        },
        "gcp:apihub/PluginConfigTemplateAuthConfigTemplate:PluginConfigTemplateAuthConfigTemplate": {
            "properties": {
                "serviceAccount": {
                    "$ref": "#/types/gcp:apihub/PluginConfigTemplateAuthConfigTemplateServiceAccount:PluginConfigTemplateAuthConfigTemplateServiceAccount",
                    "description": "Config for Google service account authentication.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "supportedAuthTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of authentication types supported by the plugin.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "supportedAuthTypes"
            ]
        },
        "gcp:apihub/PluginConfigTemplateAuthConfigTemplateServiceAccount:PluginConfigTemplateAuthConfigTemplateServiceAccount": {
            "properties": {
                "serviceAccount": {
                    "type": "string",
                    "description": "The service account to be used for authenticating request.\nThe `iam.serviceAccounts.getAccessToken` permission should be granted on\nthis service account to the impersonator service account.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "serviceAccount"
            ]
        },
        "gcp:apihub/PluginDocumentation:PluginDocumentation": {
            "properties": {
                "externalUri": {
                    "type": "string",
                    "description": "The uri of the externally hosted documentation.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:apihub/PluginHostingService:PluginHostingService": {
            "properties": {
                "serviceUri": {
                    "type": "string",
                    "description": "The URI of the service implemented by the plugin developer, used to\ninvoke the plugin's functionality. This information is only required for\nuser defined plugins.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:apihub/PluginInstanceAction:PluginInstanceAction": {
            "properties": {
                "actionId": {
                    "type": "string",
                    "description": "This should map to one of the action id specified\nin\u003cspan pulumi-lang-nodejs=\" actionsConfig \" pulumi-lang-dotnet=\" ActionsConfig \" pulumi-lang-go=\" actionsConfig \" pulumi-lang-python=\" actions_config \" pulumi-lang-yaml=\" actionsConfig \" pulumi-lang-java=\" actionsConfig \" pulumi-lang-hcl=\" actions_config \"\u003e actionsConfig \u003c/span\u003ein the plugin.\n",
                    "willReplaceOnChanges": true
                },
                "curationConfig": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceActionCurationConfig:PluginInstanceActionCurationConfig",
                    "description": "The curation information for this plugin instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "hubInstanceActions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apihub/PluginInstanceActionHubInstanceAction:PluginInstanceActionHubInstanceAction"
                    },
                    "description": "(Output)\nThe execution status for the plugin instance.\nStructure is documented below.\n"
                },
                "scheduleCronExpression": {
                    "type": "string",
                    "description": "The schedule for this plugin instance action. This can only be set if the\nplugin supports API_HUB_SCHEDULE_TRIGGER mode for this action.\n",
                    "willReplaceOnChanges": true
                },
                "scheduleTimeZone": {
                    "type": "string",
                    "description": "The time zone for the schedule cron expression. If not provided, UTC will\nbe used.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedActionsHubInstanceAction\"\" pulumi-lang-dotnet=\"\"NestedActionsHubInstanceAction\"\" pulumi-lang-go=\"\"nestedActionsHubInstanceAction\"\" pulumi-lang-python=\"\"nested_actions_hub_instance_action\"\" pulumi-lang-yaml=\"\"nestedActionsHubInstanceAction\"\" pulumi-lang-java=\"\"nestedActionsHubInstanceAction\"\" pulumi-lang-hcl=\"\"nested_actions_hub_instance_action\"\"\u003e\"nestedActionsHubInstanceAction\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`hubInstanceAction`\" pulumi-lang-dotnet=\"`HubInstanceAction`\" pulumi-lang-go=\"`hubInstanceAction`\" pulumi-lang-python=\"`hub_instance_action`\" pulumi-lang-yaml=\"`hubInstanceAction`\" pulumi-lang-java=\"`hubInstanceAction`\" pulumi-lang-hcl=\"`hub_instance_action`\"\u003e`hubInstanceAction`\u003c/span\u003e block contains:\n",
                    "willReplaceOnChanges": true
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nThe current state of the plugin action in the plugin instance.\nPossible values:\nSTATE_UNSPECIFIED\nENABLED\nDISABLED\nENABLING\nDISABLING\nERROR\n"
                }
            },
            "type": "object",
            "required": [
                "actionId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "actionId",
                        "curationConfig",
                        "hubInstanceActions",
                        "scheduleCronExpression",
                        "scheduleTimeZone",
                        "state"
                    ]
                }
            }
        },
        "gcp:apihub/PluginInstanceActionCurationConfig:PluginInstanceActionCurationConfig": {
            "properties": {
                "curationType": {
                    "type": "string",
                    "description": "Possible values:\nCURATION_TYPE_UNSPECIFIED\nDEFAULT_CURATION_FOR_API_METADATA\nCUSTOM_CURATION_FOR_API_METADATA\n",
                    "willReplaceOnChanges": true
                },
                "customCuration": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceActionCurationConfigCustomCuration:PluginInstanceActionCurationConfigCustomCuration",
                    "description": "Custom curation information for this plugin instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "curationType"
                    ]
                }
            }
        },
        "gcp:apihub/PluginInstanceActionCurationConfigCustomCuration:PluginInstanceActionCurationConfigCustomCuration": {
            "properties": {
                "curation": {
                    "type": "string",
                    "description": "The unique name of the curation resource. This will be the name of the\ncuration resource in the format:\n`projects/{project}/locations/{location}/curations/{curation}`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "curation"
            ]
        },
        "gcp:apihub/PluginInstanceActionHubInstanceAction:PluginInstanceActionHubInstanceAction": {
            "properties": {
                "currentExecutionState": {
                    "type": "string",
                    "description": "The current state of the execution.\nPossible values:\nCURRENT_EXECUTION_STATE_UNSPECIFIED\nRUNNING\nNOT_RUNNING\n"
                },
                "lastExecutions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apihub/PluginInstanceActionHubInstanceActionLastExecution:PluginInstanceActionHubInstanceActionLastExecution"
                    },
                    "description": "The result of the last execution of the plugin instance.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "currentExecutionState",
                        "lastExecutions"
                    ]
                }
            }
        },
        "gcp:apihub/PluginInstanceActionHubInstanceActionLastExecution:PluginInstanceActionHubInstanceActionLastExecution": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "The last execution end time of the plugin instance.\n"
                },
                "errorMessage": {
                    "type": "string",
                    "description": "Error message describing the failure, if any, during Create, Delete or\nApplyConfig operation corresponding to the plugin instance.This field will\nonly be populated if the plugin instance is in the ERROR or FAILED state.\n"
                },
                "result": {
                    "type": "string",
                    "description": "The result of the last execution of the plugin instance.\nPossible values:\nRESULT_UNSPECIFIED\nSUCCEEDED\nFAILED\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "The last execution start time of the plugin instance.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endTime",
                        "errorMessage",
                        "result",
                        "startTime"
                    ]
                }
            }
        },
        "gcp:apihub/PluginInstanceAuthConfig:PluginInstanceAuthConfig": {
            "properties": {
                "apiKeyConfig": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceAuthConfigApiKeyConfig:PluginInstanceAuthConfigApiKeyConfig",
                    "description": "Config for authentication with API key.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "authType": {
                    "type": "string",
                    "description": "Possible values:\nAUTH_TYPE_UNSPECIFIED\nNO_AUTH\nGOOGLE_SERVICE_ACCOUNT\nUSER_PASSWORD\nAPI_KEY\nOAUTH2_CLIENT_CREDENTIALS\n",
                    "willReplaceOnChanges": true
                },
                "googleServiceAccountConfig": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceAuthConfigGoogleServiceAccountConfig:PluginInstanceAuthConfigGoogleServiceAccountConfig",
                    "description": "Config for Google service account authentication.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "oauth2ClientCredentialsConfig": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceAuthConfigOauth2ClientCredentialsConfig:PluginInstanceAuthConfigOauth2ClientCredentialsConfig",
                    "description": "Parameters to support Oauth 2.0 client credentials grant authentication.\nSee https://tools.ietf.org/html/rfc6749#section-1.3.4 for more details.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "userPasswordConfig": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceAuthConfigUserPasswordConfig:PluginInstanceAuthConfigUserPasswordConfig",
                    "description": "Parameters to support Username and Password Authentication.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "authType"
            ]
        },
        "gcp:apihub/PluginInstanceAuthConfigApiKeyConfig:PluginInstanceAuthConfigApiKeyConfig": {
            "properties": {
                "apiKey": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceAuthConfigApiKeyConfigApiKey:PluginInstanceAuthConfigApiKeyConfigApiKey",
                    "description": "Secret provides a reference to entries in Secret Manager.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "httpElementLocation": {
                    "type": "string",
                    "description": "The location of the API key.\nThe default value is QUERY.\nPossible values:\nHTTP_ELEMENT_LOCATION_UNSPECIFIED\nQUERY\nHEADER\nPATH\nBODY\nCOOKIE\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The parameter name of the API key.\nE.g. If the API request is \"https://example.com/act?api_key=\",\n\u003cspan pulumi-lang-nodejs=\"\"apiKey\"\" pulumi-lang-dotnet=\"\"ApiKey\"\" pulumi-lang-go=\"\"apiKey\"\" pulumi-lang-python=\"\"api_key\"\" pulumi-lang-yaml=\"\"apiKey\"\" pulumi-lang-java=\"\"apiKey\"\" pulumi-lang-hcl=\"\"api_key\"\"\u003e\"apiKey\"\u003c/span\u003e would be the parameter name.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "apiKey",
                "httpElementLocation",
                "name"
            ]
        },
        "gcp:apihub/PluginInstanceAuthConfigApiKeyConfigApiKey:PluginInstanceAuthConfigApiKeyConfigApiKey": {
            "properties": {
                "secretVersion": {
                    "type": "string",
                    "description": "The resource name of the secret version in the format,\nformat as: `projects/*/secrets/*/versions/*`.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedAuthConfigOauth2ClientCredentialsConfig\"\" pulumi-lang-dotnet=\"\"NestedAuthConfigOauth2ClientCredentialsConfig\"\" pulumi-lang-go=\"\"nestedAuthConfigOauth2ClientCredentialsConfig\"\" pulumi-lang-python=\"\"nested_auth_config_oauth2_client_credentials_config\"\" pulumi-lang-yaml=\"\"nestedAuthConfigOauth2ClientCredentialsConfig\"\" pulumi-lang-java=\"\"nestedAuthConfigOauth2ClientCredentialsConfig\"\" pulumi-lang-hcl=\"\"nested_auth_config_oauth2_client_credentials_config\"\"\u003e\"nestedAuthConfigOauth2ClientCredentialsConfig\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`oauth2ClientCredentialsConfig`\" pulumi-lang-dotnet=\"`Oauth2ClientCredentialsConfig`\" pulumi-lang-go=\"`oauth2ClientCredentialsConfig`\" pulumi-lang-python=\"`oauth2_client_credentials_config`\" pulumi-lang-yaml=\"`oauth2ClientCredentialsConfig`\" pulumi-lang-java=\"`oauth2ClientCredentialsConfig`\" pulumi-lang-hcl=\"`oauth2_client_credentials_config`\"\u003e`oauth2ClientCredentialsConfig`\u003c/span\u003e block supports:\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "secretVersion"
            ]
        },
        "gcp:apihub/PluginInstanceAuthConfigGoogleServiceAccountConfig:PluginInstanceAuthConfigGoogleServiceAccountConfig": {
            "properties": {
                "serviceAccount": {
                    "type": "string",
                    "description": "The service account to be used for authenticating request.\nThe `iam.serviceAccounts.getAccessToken` permission should be granted on\nthis service account to the impersonator service account.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "serviceAccount"
            ]
        },
        "gcp:apihub/PluginInstanceAuthConfigOauth2ClientCredentialsConfig:PluginInstanceAuthConfigOauth2ClientCredentialsConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "The client identifier.\n",
                    "willReplaceOnChanges": true
                },
                "clientSecret": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceAuthConfigOauth2ClientCredentialsConfigClientSecret:PluginInstanceAuthConfigOauth2ClientCredentialsConfigClientSecret",
                    "description": "Secret provides a reference to entries in Secret Manager.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "clientSecret"
            ]
        },
        "gcp:apihub/PluginInstanceAuthConfigOauth2ClientCredentialsConfigClientSecret:PluginInstanceAuthConfigOauth2ClientCredentialsConfigClientSecret": {
            "properties": {
                "secretVersion": {
                    "type": "string",
                    "description": "The resource name of the secret version in the format,\nformat as: `projects/*/secrets/*/versions/*`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "secretVersion"
            ]
        },
        "gcp:apihub/PluginInstanceAuthConfigUserPasswordConfig:PluginInstanceAuthConfigUserPasswordConfig": {
            "properties": {
                "password": {
                    "$ref": "#/types/gcp:apihub/PluginInstanceAuthConfigUserPasswordConfigPassword:PluginInstanceAuthConfigUserPasswordConfigPassword",
                    "description": "Secret provides a reference to entries in Secret Manager.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "username": {
                    "type": "string",
                    "description": "Username.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "password",
                "username"
            ]
        },
        "gcp:apihub/PluginInstanceAuthConfigUserPasswordConfigPassword:PluginInstanceAuthConfigUserPasswordConfigPassword": {
            "properties": {
                "secretVersion": {
                    "type": "string",
                    "description": "The resource name of the secret version in the format,\nformat as: `projects/*/secrets/*/versions/*`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "secretVersion"
            ]
        },
        "gcp:appengine/ApplicationFeatureSettings:ApplicationFeatureSettings": {
            "properties": {
                "splitHealthChecks": {
                    "type": "boolean",
                    "description": "Set to false to use the legacy health check instead of the readiness\nand liveness checks.\n"
                }
            },
            "type": "object",
            "required": [
                "splitHealthChecks"
            ]
        },
        "gcp:appengine/ApplicationIap:ApplicationIap": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "(Optional) Whether the serving infrastructure will authenticate and authorize all incoming requests. \n(default is false)\n"
                },
                "oauth2ClientId": {
                    "type": "string",
                    "description": "OAuth2 client ID to use for the authentication flow.\n"
                },
                "oauth2ClientSecret": {
                    "type": "string",
                    "description": "OAuth2 client secret to use for the authentication flow.\nThe SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field.\n",
                    "secret": true
                },
                "oauth2ClientSecretSha256": {
                    "type": "string",
                    "description": "Hex-encoded SHA-256 hash of the client secret.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "oauth2ClientId",
                "oauth2ClientSecret"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "oauth2ClientId",
                        "oauth2ClientSecret",
                        "oauth2ClientSecretSha256"
                    ]
                }
            }
        },
        "gcp:appengine/ApplicationUrlDispatchRule:ApplicationUrlDispatchRule": {
            "properties": {
                "domain": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "service": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "domain",
                        "path",
                        "service"
                    ]
                }
            }
        },
        "gcp:appengine/ApplicationUrlDispatchRulesDispatchRule:ApplicationUrlDispatchRulesDispatchRule": {
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".\nDefaults to matching all domains: \"*\".\n"
                },
                "path": {
                    "type": "string",
                    "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.\nThe sum of the lengths of the domain and path may not exceed 100 characters.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.\nThe sum of the lengths of the domain and path may not exceed 100 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "service"
            ]
        },
        "gcp:appengine/DomainMappingResourceRecord:DomainMappingResourceRecord": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'.\n"
                },
                "rrdata": {
                    "type": "string",
                    "description": "Data for this record. Values vary by record type, as defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Resource record type. Example: `AAAA`.\nPossible values are: `A`, `AAAA`, `CNAME`.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/DomainMappingSslSettings:DomainMappingSslSettings": {
            "properties": {
                "certificateId": {
                    "type": "string",
                    "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will\nremove SSL support.\nBy default, a managed certificate is automatically created for every domain mapping. To omit SSL support\nor to configure SSL manually, specify `SslManagementType.MANUAL` on a `CREATE` or `UPDATE` request. You must be\nauthorized to administer the `AuthorizedCertificate` resource to manually map it to a DomainMapping resource.\nExample: 12345.\n"
                },
                "pendingManagedCertificateId": {
                    "type": "string",
                    "description": "(Output)\nID of the managed `AuthorizedCertificate` resource currently being provisioned, if applicable. Until the new\nmanaged certificate has been successfully provisioned, the previous SSL state will be preserved. Once the\nprovisioning process completes, the `certificateId` field will reflect the new managed certificate and this\nfield will be left empty. To remove SSL support while there is still a pending managed certificate, clear the\n`certificateId` field with an update request.\n"
                },
                "sslManagementType": {
                    "type": "string",
                    "description": "SSL management type for this domain. If `AUTOMATIC`, a managed certificate is automatically provisioned.\nIf `MANUAL`, `certificateId` must be manually specified in order to configure SSL for this domain.\nPossible values are: `AUTOMATIC`, `MANUAL`.\n"
                }
            },
            "type": "object",
            "required": [
                "sslManagementType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "certificateId",
                        "pendingManagedCertificateId",
                        "sslManagementType"
                    ]
                }
            }
        },
        "gcp:appengine/EngineSplitTrafficSplit:EngineSplitTrafficSplit": {
            "properties": {
                "allocations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.\n"
                },
                "shardBy": {
                    "type": "string",
                    "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.\nPossible values are: `UNSPECIFIED`, `COOKIE`, `IP`, `RANDOM`.\n"
                }
            },
            "type": "object",
            "required": [
                "allocations"
            ]
        },
        "gcp:appengine/FlexibleAppVersionApiConfig:FlexibleAppVersionApiConfig": {
            "properties": {
                "authFailAction": {
                    "type": "string",
                    "description": "Action to take when users access resources that require authentication.\nDefault value is `AUTH_FAIL_ACTION_REDIRECT`.\nPossible values are: `AUTH_FAIL_ACTION_REDIRECT`, `AUTH_FAIL_ACTION_UNAUTHORIZED`.\n"
                },
                "login": {
                    "type": "string",
                    "description": "Level of login required to access this resource.\nDefault value is `LOGIN_OPTIONAL`.\nPossible values are: `LOGIN_OPTIONAL`, `LOGIN_ADMIN`, `LOGIN_REQUIRED`.\n"
                },
                "script": {
                    "type": "string",
                    "description": "Path to the script from the application root directory.\n"
                },
                "securityLevel": {
                    "type": "string",
                    "description": "Security (HTTPS) enforcement for this URL.\nPossible values are: `SECURE_DEFAULT`, `SECURE_NEVER`, `SECURE_OPTIONAL`, `SECURE_ALWAYS`.\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL to serve the endpoint at.\n"
                }
            },
            "type": "object",
            "required": [
                "script"
            ]
        },
        "gcp:appengine/FlexibleAppVersionAutomaticScaling:FlexibleAppVersionAutomaticScaling": {
            "properties": {
                "coolDownPeriod": {
                    "type": "string",
                    "description": "The time period that the Autoscaler should wait before it starts collecting information from a new instance.\nThis prevents the autoscaler from collecting information when the instance is initializing,\nduring which the collected usage would not be reliable. Default: 120s\n"
                },
                "cpuUtilization": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionAutomaticScalingCpuUtilization:FlexibleAppVersionAutomaticScalingCpuUtilization",
                    "description": "Target scaling by CPU usage.\nStructure is documented below.\n"
                },
                "diskUtilization": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionAutomaticScalingDiskUtilization:FlexibleAppVersionAutomaticScalingDiskUtilization",
                    "description": "Target scaling by disk usage.\nStructure is documented below.\n"
                },
                "maxConcurrentRequests": {
                    "type": "integer",
                    "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.\nDefaults to a runtime-specific value.\n"
                },
                "maxIdleInstances": {
                    "type": "integer",
                    "description": "Maximum number of idle instances that should be maintained for this version.\n"
                },
                "maxPendingLatency": {
                    "type": "string",
                    "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.\n"
                },
                "maxTotalInstances": {
                    "type": "integer",
                    "description": "Maximum number of instances that should be started to handle requests for this version. Default: 20\n"
                },
                "minIdleInstances": {
                    "type": "integer",
                    "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.\n"
                },
                "minPendingLatency": {
                    "type": "string",
                    "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.\n"
                },
                "minTotalInstances": {
                    "type": "integer",
                    "description": "Minimum number of running instances that should be maintained for this version. Default: 2\n"
                },
                "networkUtilization": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionAutomaticScalingNetworkUtilization:FlexibleAppVersionAutomaticScalingNetworkUtilization",
                    "description": "Target scaling by network usage.\nStructure is documented below.\n"
                },
                "requestUtilization": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionAutomaticScalingRequestUtilization:FlexibleAppVersionAutomaticScalingRequestUtilization",
                    "description": "Target scaling by request utilization.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "cpuUtilization"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpuUtilization",
                        "maxConcurrentRequests"
                    ]
                }
            }
        },
        "gcp:appengine/FlexibleAppVersionAutomaticScalingCpuUtilization:FlexibleAppVersionAutomaticScalingCpuUtilization": {
            "properties": {
                "aggregationWindowLength": {
                    "type": "string",
                    "description": "Period of time over which CPU utilization is calculated.\n"
                },
                "targetUtilization": {
                    "type": "number",
                    "description": "Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.\n"
                }
            },
            "type": "object",
            "required": [
                "targetUtilization"
            ]
        },
        "gcp:appengine/FlexibleAppVersionAutomaticScalingDiskUtilization:FlexibleAppVersionAutomaticScalingDiskUtilization": {
            "properties": {
                "targetReadBytesPerSecond": {
                    "type": "integer",
                    "description": "Target bytes read per second.\n"
                },
                "targetReadOpsPerSecond": {
                    "type": "integer",
                    "description": "Target ops read per seconds.\n"
                },
                "targetWriteBytesPerSecond": {
                    "type": "integer",
                    "description": "Target bytes written per second.\n"
                },
                "targetWriteOpsPerSecond": {
                    "type": "integer",
                    "description": "Target ops written per second.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/FlexibleAppVersionAutomaticScalingNetworkUtilization:FlexibleAppVersionAutomaticScalingNetworkUtilization": {
            "properties": {
                "targetReceivedBytesPerSecond": {
                    "type": "integer",
                    "description": "Target bytes received per second.\n"
                },
                "targetReceivedPacketsPerSecond": {
                    "type": "integer",
                    "description": "Target packets received per second.\n"
                },
                "targetSentBytesPerSecond": {
                    "type": "integer",
                    "description": "Target bytes sent per second.\n"
                },
                "targetSentPacketsPerSecond": {
                    "type": "integer",
                    "description": "Target packets sent per second.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/FlexibleAppVersionAutomaticScalingRequestUtilization:FlexibleAppVersionAutomaticScalingRequestUtilization": {
            "properties": {
                "targetConcurrentRequests": {
                    "type": "number",
                    "description": "Target number of concurrent requests.\n"
                },
                "targetRequestCountPerSecond": {
                    "type": "string",
                    "description": "Target requests per second.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/FlexibleAppVersionDeployment:FlexibleAppVersionDeployment": {
            "properties": {
                "cloudBuildOptions": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionDeploymentCloudBuildOptions:FlexibleAppVersionDeploymentCloudBuildOptions",
                    "description": "Options for the build operations performed as a part of the version deployment. Only applicable when creating a version using source code directly.\nStructure is documented below.\n"
                },
                "container": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionDeploymentContainer:FlexibleAppVersionDeploymentContainer",
                    "description": "The Docker image for the container that runs the version.\nStructure is documented below.\n"
                },
                "files": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:appengine/FlexibleAppVersionDeploymentFile:FlexibleAppVersionDeploymentFile"
                    },
                    "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version.\nAll files must be readable using the credentials supplied with this call.\nStructure is documented below.\n"
                },
                "zip": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionDeploymentZip:FlexibleAppVersionDeploymentZip",
                    "description": "Zip File\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "container"
                    ]
                }
            }
        },
        "gcp:appengine/FlexibleAppVersionDeploymentCloudBuildOptions:FlexibleAppVersionDeploymentCloudBuildOptions": {
            "properties": {
                "appYamlPath": {
                    "type": "string",
                    "description": "Path to the yaml file used in deployment, used to determine runtime configuration details.\n"
                },
                "cloudBuildTimeout": {
                    "type": "string",
                    "description": "The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                }
            },
            "type": "object",
            "required": [
                "appYamlPath"
            ]
        },
        "gcp:appengine/FlexibleAppVersionDeploymentContainer:FlexibleAppVersionDeploymentContainer": {
            "properties": {
                "image": {
                    "type": "string",
                    "description": "URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest.\nExamples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\"\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:appengine/FlexibleAppVersionDeploymentFile:FlexibleAppVersionDeploymentFile": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "sha1Sum": {
                    "type": "string",
                    "description": "SHA1 checksum of the file\n"
                },
                "sourceUrl": {
                    "type": "string",
                    "description": "Source URL\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "sourceUrl"
            ]
        },
        "gcp:appengine/FlexibleAppVersionDeploymentZip:FlexibleAppVersionDeploymentZip": {
            "properties": {
                "filesCount": {
                    "type": "integer",
                    "description": "files count\n"
                },
                "sourceUrl": {
                    "type": "string",
                    "description": "Source URL\n"
                }
            },
            "type": "object",
            "required": [
                "sourceUrl"
            ]
        },
        "gcp:appengine/FlexibleAppVersionEndpointsApiService:FlexibleAppVersionEndpointsApiService": {
            "properties": {
                "configId": {
                    "type": "string",
                    "description": "Endpoints service configuration ID as specified by the Service Management API. For example \"2016-09-19r1\".\nBy default, the rollout strategy for Endpoints is \"FIXED\". This means that Endpoints starts up with a particular configuration ID.\nWhen a new configuration is rolled out, Endpoints must be given the new configuration ID. The configId field is used to give the configuration ID\nand is required in this case.\nEndpoints also has a rollout strategy called \"MANAGED\". When using this, Endpoints fetches the latest configuration and does not need\nthe configuration ID. In this case, configId must be omitted.\n"
                },
                "disableTraceSampling": {
                    "type": "boolean",
                    "description": "Enable or disable trace sampling. By default, this is set to false for enabled.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API.\nFor example \"myapi.endpoints.myproject.cloud.goog\"\n"
                },
                "rolloutStrategy": {
                    "type": "string",
                    "description": "Endpoints rollout strategy. If FIXED, configId must be specified. If MANAGED, configId must be omitted.\nDefault value is `FIXED`.\nPossible values are: `FIXED`, `MANAGED`.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:appengine/FlexibleAppVersionEntrypoint:FlexibleAppVersionEntrypoint": {
            "properties": {
                "shell": {
                    "type": "string",
                    "description": "The format should be a shell command that can be fed to bash -c.\n"
                }
            },
            "type": "object",
            "required": [
                "shell"
            ]
        },
        "gcp:appengine/FlexibleAppVersionFlexibleRuntimeSettings:FlexibleAppVersionFlexibleRuntimeSettings": {
            "properties": {
                "operatingSystem": {
                    "type": "string",
                    "description": "Operating System of the application runtime.\n"
                },
                "runtimeVersion": {
                    "type": "string",
                    "description": "The runtime version of an App Engine flexible application.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/FlexibleAppVersionHandler:FlexibleAppVersionHandler": {
            "properties": {
                "authFailAction": {
                    "type": "string",
                    "description": "Actions to take when the user is not logged in.\nPossible values are: `AUTH_FAIL_ACTION_REDIRECT`, `AUTH_FAIL_ACTION_UNAUTHORIZED`.\n"
                },
                "login": {
                    "type": "string",
                    "description": "Methods to restrict access to a URL based on login status.\nPossible values are: `LOGIN_OPTIONAL`, `LOGIN_ADMIN`, `LOGIN_REQUIRED`.\n"
                },
                "redirectHttpResponseCode": {
                    "type": "string",
                    "description": "30x code to use when performing redirects for the secure field.\nPossible values are: `REDIRECT_HTTP_RESPONSE_CODE_301`, `REDIRECT_HTTP_RESPONSE_CODE_302`, `REDIRECT_HTTP_RESPONSE_CODE_303`, `REDIRECT_HTTP_RESPONSE_CODE_307`.\n"
                },
                "script": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionHandlerScript:FlexibleAppVersionHandlerScript",
                    "description": "Executes a script to handle the requests that match this URL pattern.\nOnly the auto value is supported for Node.js in the App Engine standard environment, for example \"script:\" \"auto\".\nStructure is documented below.\n"
                },
                "securityLevel": {
                    "type": "string",
                    "description": "Security (HTTPS) enforcement for this URL.\nPossible values are: `SECURE_DEFAULT`, `SECURE_NEVER`, `SECURE_OPTIONAL`, `SECURE_ALWAYS`.\n"
                },
                "staticFiles": {
                    "$ref": "#/types/gcp:appengine/FlexibleAppVersionHandlerStaticFiles:FlexibleAppVersionHandlerStaticFiles",
                    "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files.\nStatic file handlers describe which files in the application directory are static files, and which URLs serve them.\nStructure is documented below.\n"
                },
                "urlRegex": {
                    "type": "string",
                    "description": "URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings.\nAll URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/FlexibleAppVersionHandlerScript:FlexibleAppVersionHandlerScript": {
            "properties": {
                "scriptPath": {
                    "type": "string",
                    "description": "Path to the script from the application root directory.\n"
                }
            },
            "type": "object",
            "required": [
                "scriptPath"
            ]
        },
        "gcp:appengine/FlexibleAppVersionHandlerStaticFiles:FlexibleAppVersionHandlerStaticFiles": {
            "properties": {
                "applicationReadable": {
                    "type": "boolean",
                    "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are\nuploaded as static data and are only served to end users; they cannot be read by the application. If enabled,\nuploads are charged against both your code and static data storage resource quotas.\n"
                },
                "expiration": {
                    "type": "string",
                    "description": "Time a static file served by this handler should be cached by web proxies and browsers.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example \"3.5s\".\nDefault is '0s'\n"
                },
                "httpHeaders": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "HTTP headers to use for all responses from these URLs.\nAn object containing a list of \"key:value\" value pairs.\".\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "MIME type used to serve all files served by this handler.\nDefaults to file-specific MIME types, which are derived from each file's filename extension.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to the static files matched by the URL pattern, from the application root directory.\nThe path can refer to text matched in groupings in the URL pattern.\n"
                },
                "requireMatchingFile": {
                    "type": "boolean",
                    "description": "Whether this handler should match the request if the file referenced by the handler does not exist.\n"
                },
                "uploadPathRegex": {
                    "type": "string",
                    "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/FlexibleAppVersionLivenessCheck:FlexibleAppVersionLivenessCheck": {
            "properties": {
                "checkInterval": {
                    "type": "string",
                    "description": "Interval between health checks.\n"
                },
                "failureThreshold": {
                    "type": "number",
                    "description": "Number of consecutive failed checks required before considering the VM unhealthy. Default: 4.\n"
                },
                "host": {
                    "type": "string",
                    "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"\n"
                },
                "initialDelay": {
                    "type": "string",
                    "description": "The initial delay before starting to execute the checks. Default: \"300s\"\n"
                },
                "path": {
                    "type": "string",
                    "description": "The request path.\n"
                },
                "successThreshold": {
                    "type": "number",
                    "description": "Number of consecutive successful checks required before considering the VM healthy. Default: 2.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Time before the check is considered failed. Default: \"4s\"\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ]
        },
        "gcp:appengine/FlexibleAppVersionManualScaling:FlexibleAppVersionManualScaling": {
            "properties": {
                "instances": {
                    "type": "integer",
                    "description": "Number of instances to assign to the service at the start.\n**Note:** When managing the number of instances at runtime through the App Engine Admin API or the (now deprecated) Python 2\nModules API set_num_instances() you must use `lifecycle.ignore_changes = [\u003cspan pulumi-lang-nodejs=\"\"manualScaling\"\" pulumi-lang-dotnet=\"\"ManualScaling\"\" pulumi-lang-go=\"\"manualScaling\"\" pulumi-lang-python=\"\"manual_scaling\"\" pulumi-lang-yaml=\"\"manualScaling\"\" pulumi-lang-java=\"\"manualScaling\"\" pulumi-lang-hcl=\"\"manual_scaling\"\"\u003e\"manualScaling\"\u003c/span\u003e[0].instances]` to prevent drift detection.\n"
                }
            },
            "type": "object",
            "required": [
                "instances"
            ]
        },
        "gcp:appengine/FlexibleAppVersionNetwork:FlexibleAppVersionNetwork": {
            "properties": {
                "forwardedPorts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of ports, or port pairs, to forward from the virtual machine to the application container.\n"
                },
                "instanceIpMode": {
                    "type": "string",
                    "description": "(Optional, Beta)\nPrevent instances from receiving an ephemeral external IP address.\nPossible values are: `EXTERNAL`, `INTERNAL`.\n"
                },
                "instanceTag": {
                    "type": "string",
                    "description": "Tag to apply to the instance during creation.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.\n"
                },
                "sessionAffinity": {
                    "type": "boolean",
                    "description": "Enable session affinity.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.\nIf the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.\nIf the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetworkName) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network.\nIf the network that the instance is being created in is a custom Subnet Mode Network, then the subnetworkName must be specified and the IP address is created from the IPCidrRange of the subnetwork.\nIf specified, the subnetwork must exist in the same region as the App Engine flexible environment application.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:appengine/FlexibleAppVersionReadinessCheck:FlexibleAppVersionReadinessCheck": {
            "properties": {
                "appStartTimeout": {
                    "type": "string",
                    "description": "A maximum time limit on application initialization, measured from moment the application successfully\nreplies to a healthcheck until it is ready to serve traffic. Default: \"300s\"\n"
                },
                "checkInterval": {
                    "type": "string",
                    "description": "Interval between health checks.  Default: \"5s\".\n"
                },
                "failureThreshold": {
                    "type": "number",
                    "description": "Number of consecutive failed checks required before removing traffic. Default: 2.\n"
                },
                "host": {
                    "type": "string",
                    "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"\n"
                },
                "path": {
                    "type": "string",
                    "description": "The request path.\n"
                },
                "successThreshold": {
                    "type": "number",
                    "description": "Number of consecutive successful checks required before receiving traffic. Default: 2.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Time before the check is considered failed. Default: \"4s\"\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ]
        },
        "gcp:appengine/FlexibleAppVersionResources:FlexibleAppVersionResources": {
            "properties": {
                "cpu": {
                    "type": "integer",
                    "description": "Number of CPU cores needed.\n"
                },
                "diskGb": {
                    "type": "integer",
                    "description": "Disk size (GB) needed.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) needed.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:appengine/FlexibleAppVersionResourcesVolume:FlexibleAppVersionResourcesVolume"
                    },
                    "description": "List of ports, or port pairs, to forward from the virtual machine to the application container.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/FlexibleAppVersionResourcesVolume:FlexibleAppVersionResourcesVolume": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Unique name for the volume.\n"
                },
                "sizeGb": {
                    "type": "integer",
                    "description": "Volume size in gigabytes.\n"
                },
                "volumeType": {
                    "type": "string",
                    "description": "Underlying volume type, e.g. 'tmpfs'.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "sizeGb",
                "volumeType"
            ]
        },
        "gcp:appengine/FlexibleAppVersionVpcAccessConnector:FlexibleAppVersionVpcAccessConnector": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:appengine/ServiceNetworkSettingsNetworkSettings:ServiceNetworkSettingsNetworkSettings": {
            "properties": {
                "ingressTrafficAllowed": {
                    "type": "string",
                    "description": "The ingress settings for version or service.\nDefault value is `INGRESS_TRAFFIC_ALLOWED_UNSPECIFIED`.\nPossible values are: `INGRESS_TRAFFIC_ALLOWED_UNSPECIFIED`, `INGRESS_TRAFFIC_ALLOWED_ALL`, `INGRESS_TRAFFIC_ALLOWED_INTERNAL_ONLY`, `INGRESS_TRAFFIC_ALLOWED_INTERNAL_AND_LB`.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/StandardAppVersionAutomaticScaling:StandardAppVersionAutomaticScaling": {
            "properties": {
                "maxConcurrentRequests": {
                    "type": "integer",
                    "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.\nDefaults to a runtime-specific value.\n"
                },
                "maxIdleInstances": {
                    "type": "integer",
                    "description": "Maximum number of idle instances that should be maintained for this version.\n"
                },
                "maxPendingLatency": {
                    "type": "string",
                    "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                },
                "minIdleInstances": {
                    "type": "integer",
                    "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.\n"
                },
                "minPendingLatency": {
                    "type": "string",
                    "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                },
                "standardSchedulerSettings": {
                    "$ref": "#/types/gcp:appengine/StandardAppVersionAutomaticScalingStandardSchedulerSettings:StandardAppVersionAutomaticScalingStandardSchedulerSettings",
                    "description": "Scheduler settings for standard environment.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/StandardAppVersionAutomaticScalingStandardSchedulerSettings:StandardAppVersionAutomaticScalingStandardSchedulerSettings": {
            "properties": {
                "maxInstances": {
                    "type": "integer",
                    "description": "Maximum number of instances to run for this version. Set to zero to disable maxInstances configuration.\n**Note:** Starting from March 2025, App Engine sets the maxInstances default for standard environment deployments to 20. This change doesn't impact existing apps. To override the default, specify a new value between 0 and 2147483647, and deploy a new version or redeploy over an existing version. To disable the maxInstances default configuration setting, specify the maximum permitted value 2147483647.\n"
                },
                "minInstances": {
                    "type": "integer",
                    "description": "Minimum number of instances to run for this version. Set to zero to disable minInstances configuration.\n"
                },
                "targetCpuUtilization": {
                    "type": "number",
                    "description": "Target CPU utilization ratio to maintain when scaling. Should be a value in the range [0.50, 0.95], zero, or a negative value.\n"
                },
                "targetThroughputUtilization": {
                    "type": "number",
                    "description": "Target throughput utilization ratio to maintain when scaling. Should be a value in the range [0.50, 0.95], zero, or a negative value.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxInstances"
                    ]
                }
            }
        },
        "gcp:appengine/StandardAppVersionBasicScaling:StandardAppVersionBasicScaling": {
            "properties": {
                "idleTimeout": {
                    "type": "string",
                    "description": "Duration of time after the last request that an instance must wait before the instance is shut down.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\". Defaults to 900s.\n"
                },
                "maxInstances": {
                    "type": "integer",
                    "description": "Maximum number of instances to create for this version. Must be in the range [1.0, 200.0].\n"
                }
            },
            "type": "object",
            "required": [
                "maxInstances"
            ]
        },
        "gcp:appengine/StandardAppVersionDeployment:StandardAppVersionDeployment": {
            "properties": {
                "files": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:appengine/StandardAppVersionDeploymentFile:StandardAppVersionDeploymentFile"
                    },
                    "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version.\nAll files must be readable using the credentials supplied with this call.\nStructure is documented below.\n"
                },
                "zip": {
                    "$ref": "#/types/gcp:appengine/StandardAppVersionDeploymentZip:StandardAppVersionDeploymentZip",
                    "description": "Zip File\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/StandardAppVersionDeploymentFile:StandardAppVersionDeploymentFile": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "sha1Sum": {
                    "type": "string",
                    "description": "SHA1 checksum of the file\n"
                },
                "sourceUrl": {
                    "type": "string",
                    "description": "Source URL\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "sourceUrl"
            ]
        },
        "gcp:appengine/StandardAppVersionDeploymentZip:StandardAppVersionDeploymentZip": {
            "properties": {
                "filesCount": {
                    "type": "integer",
                    "description": "files count\n"
                },
                "sourceUrl": {
                    "type": "string",
                    "description": "Source URL\n"
                }
            },
            "type": "object",
            "required": [
                "sourceUrl"
            ]
        },
        "gcp:appengine/StandardAppVersionEntrypoint:StandardAppVersionEntrypoint": {
            "properties": {
                "shell": {
                    "type": "string",
                    "description": "The format should be a shell command that can be fed to bash -c.\n"
                }
            },
            "type": "object",
            "required": [
                "shell"
            ]
        },
        "gcp:appengine/StandardAppVersionHandler:StandardAppVersionHandler": {
            "properties": {
                "authFailAction": {
                    "type": "string",
                    "description": "Actions to take when the user is not logged in.\nPossible values are: `AUTH_FAIL_ACTION_REDIRECT`, `AUTH_FAIL_ACTION_UNAUTHORIZED`.\n"
                },
                "login": {
                    "type": "string",
                    "description": "Methods to restrict access to a URL based on login status.\nPossible values are: `LOGIN_OPTIONAL`, `LOGIN_ADMIN`, `LOGIN_REQUIRED`.\n"
                },
                "redirectHttpResponseCode": {
                    "type": "string",
                    "description": "30x code to use when performing redirects for the secure field.\nPossible values are: `REDIRECT_HTTP_RESPONSE_CODE_301`, `REDIRECT_HTTP_RESPONSE_CODE_302`, `REDIRECT_HTTP_RESPONSE_CODE_303`, `REDIRECT_HTTP_RESPONSE_CODE_307`.\n"
                },
                "script": {
                    "$ref": "#/types/gcp:appengine/StandardAppVersionHandlerScript:StandardAppVersionHandlerScript",
                    "description": "Executes a script to handle the requests that match this URL pattern.\nOnly the auto value is supported for Node.js in the App Engine standard environment, for example \"script:\" \"auto\".\nStructure is documented below.\n"
                },
                "securityLevel": {
                    "type": "string",
                    "description": "Security (HTTPS) enforcement for this URL.\nPossible values are: `SECURE_DEFAULT`, `SECURE_NEVER`, `SECURE_OPTIONAL`, `SECURE_ALWAYS`.\n"
                },
                "staticFiles": {
                    "$ref": "#/types/gcp:appengine/StandardAppVersionHandlerStaticFiles:StandardAppVersionHandlerStaticFiles",
                    "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.\nStructure is documented below.\n"
                },
                "urlRegex": {
                    "type": "string",
                    "description": "URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings.\nAll URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/StandardAppVersionHandlerScript:StandardAppVersionHandlerScript": {
            "properties": {
                "scriptPath": {
                    "type": "string",
                    "description": "Path to the script from the application root directory.\n"
                }
            },
            "type": "object",
            "required": [
                "scriptPath"
            ]
        },
        "gcp:appengine/StandardAppVersionHandlerStaticFiles:StandardAppVersionHandlerStaticFiles": {
            "properties": {
                "applicationReadable": {
                    "type": "boolean",
                    "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as\nstatic data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged\nagainst both your code and static data storage resource quotas.\n"
                },
                "expiration": {
                    "type": "string",
                    "description": "Time a static file served by this handler should be cached by web proxies and browsers.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example \"3.5s\".\n"
                },
                "httpHeaders": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "HTTP headers to use for all responses from these URLs.\nAn object containing a list of \"key:value\" value pairs.\".\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "MIME type used to serve all files served by this handler.\nDefaults to file-specific MIME types, which are derived from each file's filename extension.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.\n"
                },
                "requireMatchingFile": {
                    "type": "boolean",
                    "description": "Whether this handler should match the request if the file referenced by the handler does not exist.\n"
                },
                "uploadPathRegex": {
                    "type": "string",
                    "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/StandardAppVersionLibrary:StandardAppVersionLibrary": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the library. Example \"django\".\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the library to select, or \"latest\".\n"
                }
            },
            "type": "object"
        },
        "gcp:appengine/StandardAppVersionManualScaling:StandardAppVersionManualScaling": {
            "properties": {
                "instances": {
                    "type": "integer",
                    "description": "Number of instances to assign to the service at the start.\n**Note:** When managing the number of instances at runtime through the App Engine Admin API or the (now deprecated) Python 2\nModules API set_num_instances() you must use `lifecycle.ignore_changes = [\u003cspan pulumi-lang-nodejs=\"\"manualScaling\"\" pulumi-lang-dotnet=\"\"ManualScaling\"\" pulumi-lang-go=\"\"manualScaling\"\" pulumi-lang-python=\"\"manual_scaling\"\" pulumi-lang-yaml=\"\"manualScaling\"\" pulumi-lang-java=\"\"manualScaling\"\" pulumi-lang-hcl=\"\"manual_scaling\"\"\u003e\"manualScaling\"\u003c/span\u003e[0].instances]` to prevent drift detection.\n"
                }
            },
            "type": "object",
            "required": [
                "instances"
            ]
        },
        "gcp:appengine/StandardAppVersionVpcAccessConnector:StandardAppVersionVpcAccessConnector": {
            "properties": {
                "egressSetting": {
                    "type": "string",
                    "description": "The egress setting for the connector, controlling what traffic is diverted through it.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:apphub/ApplicationAttributes:ApplicationAttributes": {
            "properties": {
                "businessOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ApplicationAttributesBusinessOwner:ApplicationAttributesBusinessOwner"
                    },
                    "description": "Optional. Business team that ensures user needs are met and value is delivered\nStructure is documented below.\n"
                },
                "criticality": {
                    "$ref": "#/types/gcp:apphub/ApplicationAttributesCriticality:ApplicationAttributesCriticality",
                    "description": "Criticality of the Application, Service, or Workload\nStructure is documented below.\n"
                },
                "developerOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ApplicationAttributesDeveloperOwner:ApplicationAttributesDeveloperOwner"
                    },
                    "description": "Optional. Developer team that owns development and coding.\nStructure is documented below.\n"
                },
                "environment": {
                    "$ref": "#/types/gcp:apphub/ApplicationAttributesEnvironment:ApplicationAttributesEnvironment",
                    "description": "Environment of the Application, Service, or Workload\nStructure is documented below.\n"
                },
                "operatorOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ApplicationAttributesOperatorOwner:ApplicationAttributesOperatorOwner"
                    },
                    "description": "Optional. Operator team that ensures runtime and operations.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apphub/ApplicationAttributesBusinessOwner:ApplicationAttributesBusinessOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Optional. Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/ApplicationAttributesCriticality:ApplicationAttributesCriticality": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Criticality type.\nPossible values are: `MISSION_CRITICAL`, `HIGH`, `MEDIUM`, `LOW`.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:apphub/ApplicationAttributesDeveloperOwner:ApplicationAttributesDeveloperOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Optional. Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/ApplicationAttributesEnvironment:ApplicationAttributesEnvironment": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Environment type.\nPossible values are: `PRODUCTION`, `STAGING`, `TEST`, `DEVELOPMENT`.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:apphub/ApplicationAttributesOperatorOwner:ApplicationAttributesOperatorOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Optional. Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/ApplicationScope:ApplicationScope": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Required. Scope Type.\nPossible values:\nREGIONAL\nGLOBAL\nPossible values are: `REGIONAL`, `GLOBAL`.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:apphub/ServiceAttributes:ServiceAttributes": {
            "properties": {
                "businessOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ServiceAttributesBusinessOwner:ServiceAttributesBusinessOwner"
                    },
                    "description": "Business team that ensures user needs are met and value is delivered\nStructure is documented below.\n"
                },
                "criticality": {
                    "$ref": "#/types/gcp:apphub/ServiceAttributesCriticality:ServiceAttributesCriticality",
                    "description": "Criticality of the Application, Service, or Workload\nStructure is documented below.\n"
                },
                "developerOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ServiceAttributesDeveloperOwner:ServiceAttributesDeveloperOwner"
                    },
                    "description": "Developer team that owns development and coding.\nStructure is documented below.\n"
                },
                "environment": {
                    "$ref": "#/types/gcp:apphub/ServiceAttributesEnvironment:ServiceAttributesEnvironment",
                    "description": "Environment of the Application, Service, or Workload\nStructure is documented below.\n"
                },
                "operatorOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ServiceAttributesOperatorOwner:ServiceAttributesOperatorOwner"
                    },
                    "description": "Operator team that ensures runtime and operations.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apphub/ServiceAttributesBusinessOwner:ServiceAttributesBusinessOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/ServiceAttributesCriticality:ServiceAttributesCriticality": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Criticality type.\nPossible values are: `MISSION_CRITICAL`, `HIGH`, `MEDIUM`, `LOW`.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:apphub/ServiceAttributesDeveloperOwner:ServiceAttributesDeveloperOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/ServiceAttributesEnvironment:ServiceAttributesEnvironment": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Environment type.\nPossible values are: `PRODUCTION`, `STAGING`, `TEST`, `DEVELOPMENT`.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:apphub/ServiceAttributesOperatorOwner:ServiceAttributesOperatorOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/ServiceServiceProperty:ServiceServiceProperty": {
            "properties": {
                "extendedMetadatas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ServiceServicePropertyExtendedMetadata:ServiceServicePropertyExtendedMetadata"
                    },
                    "description": "(Output)\nOutput only. Additional metadata specific to the resource type.\nStructure is documented below.\n"
                },
                "functionalTypes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ServiceServicePropertyFunctionalType:ServiceServicePropertyFunctionalType"
                    },
                    "description": "(Output)\nOutput only. The type of the service.\nStructure is documented below.\n"
                },
                "gcpProject": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The service project identifier that the underlying cloud resource resides in.\n"
                },
                "identities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ServiceServicePropertyIdentity:ServiceServicePropertyIdentity"
                    },
                    "description": "(Output)\nThe identity associated with the service.\nStructure is documented below.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Part of \u003cspan pulumi-lang-nodejs=\"`parent`\" pulumi-lang-dotnet=\"`Parent`\" pulumi-lang-go=\"`parent`\" pulumi-lang-python=\"`parent`\" pulumi-lang-yaml=\"`parent`\" pulumi-lang-java=\"`parent`\" pulumi-lang-hcl=\"`parent`\"\u003e`parent`\u003c/span\u003e.  Full resource name of a parent Application. Example: projects/{HOST_PROJECT_ID}/locations/{LOCATION}/applications/{APPLICATION_ID}\n"
                },
                "registrationTypes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ServiceServicePropertyRegistrationType:ServiceServicePropertyRegistrationType"
                    },
                    "description": "(Output)\nOutput only. The registration type of the service.\nStructure is documented below.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The location that the underlying resource resides in if it is zonal, for example, us-west1-a).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "extendedMetadatas",
                        "functionalTypes",
                        "gcpProject",
                        "identities",
                        "location",
                        "registrationTypes",
                        "zone"
                    ]
                }
            }
        },
        "gcp:apphub/ServiceServicePropertyExtendedMetadata:ServiceServicePropertyExtendedMetadata": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "(Output)\nThe key of the extended metadata.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/ServiceServicePropertyExtendedMetadataValue:ServiceServicePropertyExtendedMetadataValue"
                    },
                    "description": "(Output)\nThe value of the extended metadata.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "key",
                        "values"
                    ]
                }
            }
        },
        "gcp:apphub/ServiceServicePropertyExtendedMetadataValue:ServiceServicePropertyExtendedMetadataValue": {
            "properties": {
                "extendedMetadataSchema": {
                    "type": "string",
                    "description": "(Output)\nThe resource name for the Extended Metadata Schema.\n"
                },
                "metadataStruct": {
                    "type": "string",
                    "description": "(Output)\nThe metadata contents as a JSON string.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "extendedMetadataSchema",
                        "metadataStruct"
                    ]
                }
            }
        },
        "gcp:apphub/ServiceServicePropertyFunctionalType:ServiceServicePropertyFunctionalType": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The registration type of a service.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "gcp:apphub/ServiceServicePropertyIdentity:ServiceServicePropertyIdentity": {
            "properties": {
                "principal": {
                    "type": "string",
                    "description": "(Output)\nThe principal of the identity.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "principal"
                    ]
                }
            }
        },
        "gcp:apphub/ServiceServicePropertyRegistrationType:ServiceServicePropertyRegistrationType": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The registration type of a service.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "gcp:apphub/ServiceServiceReference:ServiceServiceReference": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The underlying resource URI (For example, URI of Forwarding Rule, URL Map,\nand Backend Service).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "uri"
                    ]
                }
            }
        },
        "gcp:apphub/WorkloadAttributes:WorkloadAttributes": {
            "properties": {
                "businessOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/WorkloadAttributesBusinessOwner:WorkloadAttributesBusinessOwner"
                    },
                    "description": "Business team that ensures user needs are met and value is delivered\nStructure is documented below.\n"
                },
                "criticality": {
                    "$ref": "#/types/gcp:apphub/WorkloadAttributesCriticality:WorkloadAttributesCriticality",
                    "description": "Criticality of the Application, Service, or Workload\nStructure is documented below.\n"
                },
                "developerOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/WorkloadAttributesDeveloperOwner:WorkloadAttributesDeveloperOwner"
                    },
                    "description": "Developer team that owns development and coding.\nStructure is documented below.\n"
                },
                "environment": {
                    "$ref": "#/types/gcp:apphub/WorkloadAttributesEnvironment:WorkloadAttributesEnvironment",
                    "description": "Environment of the Application, Service, or Workload\nStructure is documented below.\n"
                },
                "operatorOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/WorkloadAttributesOperatorOwner:WorkloadAttributesOperatorOwner"
                    },
                    "description": "Operator team that ensures runtime and operations.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:apphub/WorkloadAttributesBusinessOwner:WorkloadAttributesBusinessOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/WorkloadAttributesCriticality:WorkloadAttributesCriticality": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Criticality type.\nPossible values are: `MISSION_CRITICAL`, `HIGH`, `MEDIUM`, `LOW`.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:apphub/WorkloadAttributesDeveloperOwner:WorkloadAttributesDeveloperOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/WorkloadAttributesEnvironment:WorkloadAttributesEnvironment": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Environment type.\nPossible values are: `PRODUCTION`, `STAGING`, `TEST`, `DEVELOPMENT`.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:apphub/WorkloadAttributesOperatorOwner:WorkloadAttributesOperatorOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:apphub/WorkloadWorkloadProperty:WorkloadWorkloadProperty": {
            "properties": {
                "extendedMetadatas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/WorkloadWorkloadPropertyExtendedMetadata:WorkloadWorkloadPropertyExtendedMetadata"
                    },
                    "description": "(Output)\nOutput only. Additional metadata specific to the resource type.\nStructure is documented below.\n"
                },
                "functionalTypes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/WorkloadWorkloadPropertyFunctionalType:WorkloadWorkloadPropertyFunctionalType"
                    },
                    "description": "(Output)\nOutput only. The functional type of a service or workload.\nStructure is documented below.\n"
                },
                "gcpProject": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The service project identifier that the underlying cloud resource resides in. Empty for non cloud resources.\n"
                },
                "identities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/WorkloadWorkloadPropertyIdentity:WorkloadWorkloadPropertyIdentity"
                    },
                    "description": "(Output)\nThe identity associated with the workload.\nStructure is documented below.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Part of \u003cspan pulumi-lang-nodejs=\"`parent`\" pulumi-lang-dotnet=\"`Parent`\" pulumi-lang-go=\"`parent`\" pulumi-lang-python=\"`parent`\" pulumi-lang-yaml=\"`parent`\" pulumi-lang-java=\"`parent`\" pulumi-lang-hcl=\"`parent`\"\u003e`parent`\u003c/span\u003e.  Full resource name of a parent Application. Example: projects/{HOST_PROJECT_ID}/locations/{LOCATION}/applications/{APPLICATION_ID}\n"
                },
                "zone": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The location that the underlying compute resource resides in if it is zonal (e.g us-west1-a).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "extendedMetadatas",
                        "functionalTypes",
                        "gcpProject",
                        "identities",
                        "location",
                        "zone"
                    ]
                }
            }
        },
        "gcp:apphub/WorkloadWorkloadPropertyExtendedMetadata:WorkloadWorkloadPropertyExtendedMetadata": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "(Output)\nThe key of the extended metadata.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/WorkloadWorkloadPropertyExtendedMetadataValue:WorkloadWorkloadPropertyExtendedMetadataValue"
                    },
                    "description": "(Output)\nThe value of the extended metadata.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "key",
                        "values"
                    ]
                }
            }
        },
        "gcp:apphub/WorkloadWorkloadPropertyExtendedMetadataValue:WorkloadWorkloadPropertyExtendedMetadataValue": {
            "properties": {
                "extendedMetadataSchema": {
                    "type": "string",
                    "description": "(Output)\nThe resource name for the Extended Metadata Schema.\n"
                },
                "metadataStruct": {
                    "type": "string",
                    "description": "(Output)\nThe metadata contents as a JSON string.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "extendedMetadataSchema",
                        "metadataStruct"
                    ]
                }
            }
        },
        "gcp:apphub/WorkloadWorkloadPropertyFunctionalType:WorkloadWorkloadPropertyFunctionalType": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The functional type of a service or workload.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "gcp:apphub/WorkloadWorkloadPropertyIdentity:WorkloadWorkloadPropertyIdentity": {
            "properties": {
                "principal": {
                    "type": "string",
                    "description": "(Output)\nThe principal of the identity.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "principal"
                    ]
                }
            }
        },
        "gcp:apphub/WorkloadWorkloadReference:WorkloadWorkloadReference": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The underlying compute resource uri.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "uri"
                    ]
                }
            }
        },
        "gcp:apphub/getApplicationAttribute:getApplicationAttribute": {
            "properties": {
                "businessOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/getApplicationAttributeBusinessOwner:getApplicationAttributeBusinessOwner"
                    },
                    "description": "Optional. Business team that ensures user needs are met and value is delivered\n"
                },
                "criticalities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/getApplicationAttributeCriticality:getApplicationAttributeCriticality"
                    },
                    "description": "Criticality of the Application, Service, or Workload\n"
                },
                "developerOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/getApplicationAttributeDeveloperOwner:getApplicationAttributeDeveloperOwner"
                    },
                    "description": "Optional. Developer team that owns development and coding.\n"
                },
                "environments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/getApplicationAttributeEnvironment:getApplicationAttributeEnvironment"
                    },
                    "description": "Environment of the Application, Service, or Workload\n"
                },
                "operatorOwners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:apphub/getApplicationAttributeOperatorOwner:getApplicationAttributeOperatorOwner"
                    },
                    "description": "Optional. Operator team that ensures runtime and operations.\n"
                }
            },
            "type": "object",
            "required": [
                "businessOwners",
                "criticalities",
                "developerOwners",
                "environments",
                "operatorOwners"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getApplicationAttributeBusinessOwner:getApplicationAttributeBusinessOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Optional. Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "email"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getApplicationAttributeCriticality:getApplicationAttributeCriticality": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Criticality type. Possible values: [\"MISSION_CRITICAL\", \"HIGH\", \"MEDIUM\", \"LOW\"]\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getApplicationAttributeDeveloperOwner:getApplicationAttributeDeveloperOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Optional. Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "email"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getApplicationAttributeEnvironment:getApplicationAttributeEnvironment": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Environment type. Possible values: [\"PRODUCTION\", \"STAGING\", \"TEST\", \"DEVELOPMENT\"]\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getApplicationAttributeOperatorOwner:getApplicationAttributeOperatorOwner": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "Optional. Contact's name.\n"
                },
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contacts.\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "email"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getApplicationScope:getApplicationScope": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Required. Scope Type. \n Possible values:\nREGIONAL\nGLOBAL Possible values: [\"REGIONAL\", \"GLOBAL\"]\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getDiscoveredServiceServiceProperty:getDiscoveredServiceServiceProperty": {
            "properties": {
                "gcpProject": {
                    "type": "string",
                    "description": "The service project identifier that the underlying cloud resource resides in.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the discovered service.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The location that the underlying resource resides in if it is zonal.\n"
                }
            },
            "type": "object",
            "required": [
                "gcpProject",
                "location",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getDiscoveredServiceServiceReference:getDiscoveredServiceServiceReference": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Additional path under the resource URI.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The underlying resource URI.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getDiscoveredWorkloadWorkloadProperty:getDiscoveredWorkloadWorkloadProperty": {
            "properties": {
                "gcpProject": {
                    "type": "string",
                    "description": "The service project identifier that the underlying cloud resource resides in.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location of the discovered workload.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The location that the underlying resource resides in if it is zonal.\n"
                }
            },
            "type": "object",
            "required": [
                "gcpProject",
                "location",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:apphub/getDiscoveredWorkloadWorkloadReference:getDiscoveredWorkloadWorkloadReference": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "The underlying resource URI.\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:applicationintegration/AuthConfigClientCertificate:AuthConfigClientCertificate": {
            "properties": {
                "encryptedPrivateKey": {
                    "type": "string",
                    "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines.\n"
                },
                "passphrase": {
                    "type": "string",
                    "description": "'passphrase' should be left unset if private key is not encrypted.\nNote that 'passphrase' is not the password for web server, but an extra layer of security to protected private key.\n"
                },
                "sslCertificate": {
                    "type": "string",
                    "description": "The ssl certificate encoded in PEM format. This string must include the begin header and end footer lines.\n"
                }
            },
            "type": "object",
            "required": [
                "encryptedPrivateKey",
                "sslCertificate"
            ]
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredential:AuthConfigDecryptedCredential": {
            "properties": {
                "authToken": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialAuthToken:AuthConfigDecryptedCredentialAuthToken",
                    "description": "Auth token credential.\nStructure is documented below.\n"
                },
                "credentialType": {
                    "type": "string",
                    "description": "Credential type associated with auth configs.\n"
                },
                "jwt": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialJwt:AuthConfigDecryptedCredentialJwt",
                    "description": "JWT credential.\nStructure is documented below.\n"
                },
                "oauth2AuthorizationCode": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2AuthorizationCode:AuthConfigDecryptedCredentialOauth2AuthorizationCode",
                    "description": "OAuth2 authorization code credential.\nStructure is documented below.\n"
                },
                "oauth2ClientCredentials": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentials:AuthConfigDecryptedCredentialOauth2ClientCredentials",
                    "description": "OAuth2 client credentials.\nStructure is documented below.\n"
                },
                "oidcToken": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOidcToken:AuthConfigDecryptedCredentialOidcToken",
                    "description": "Google OIDC ID Token.\nStructure is documented below.\n"
                },
                "serviceAccountCredentials": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialServiceAccountCredentials:AuthConfigDecryptedCredentialServiceAccountCredentials",
                    "description": "Service account credential.\nStructure is documented below.\n"
                },
                "usernameAndPassword": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialUsernameAndPassword:AuthConfigDecryptedCredentialUsernameAndPassword",
                    "description": "Username and password credential.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "credentialType"
            ]
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialAuthToken:AuthConfigDecryptedCredentialAuthToken": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "The token for the auth type.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Authentication type, e.g. \"Basic\", \"Bearer\", etc.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialJwt:AuthConfigDecryptedCredentialJwt": {
            "properties": {
                "jwt": {
                    "type": "string",
                    "description": "(Output)\nThe token calculated by the header, payload and signature.\n"
                },
                "jwtHeader": {
                    "type": "string",
                    "description": "Identifies which algorithm is used to generate the signature.\n"
                },
                "jwtPayload": {
                    "type": "string",
                    "description": "Contains a set of claims. The JWT specification defines seven Registered Claim Names which are the standard fields commonly included in tokens. Custom claims are usually also included, depending on the purpose of the token.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "User's pre-shared secret to sign the token.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "jwt"
                    ]
                }
            }
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2AuthorizationCode:AuthConfigDecryptedCredentialOauth2AuthorizationCode": {
            "properties": {
                "authEndpoint": {
                    "type": "string",
                    "description": "The auth url endpoint to send the auth code request to.\n"
                },
                "clientId": {
                    "type": "string",
                    "description": "The client's id.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "The client's secret.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "A space-delimited list of requested scope permissions.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "The token url endpoint to send the token request to.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentials:AuthConfigDecryptedCredentialOauth2ClientCredentials": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "The client's ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "The client's secret.\n"
                },
                "requestType": {
                    "type": "string",
                    "description": "Represent how to pass parameters to fetch access token Possible values: [\"REQUEST_TYPE_UNSPECIFIED\", \"REQUEST_BODY\", \"QUERY_PARAMETERS\", \"ENCODED_HEADER\"]\n"
                },
                "scope": {
                    "type": "string",
                    "description": "A space-delimited list of requested scope permissions.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "The token endpoint is used by the client to obtain an access token by presenting its authorization grant or refresh token.\n"
                },
                "tokenParams": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParams:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParams",
                    "description": "Token parameters for the auth request.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParams:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParams": {
            "properties": {
                "entries": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntry:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntry"
                    },
                    "description": "A list of parameter map entries.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntry:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntry": {
            "properties": {
                "key": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryKey:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryKey",
                    "description": "Key of the map entry.\nStructure is documented below.\n"
                },
                "value": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryValue:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryValue",
                    "description": "Value of the map entry.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryKey:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryKey": {
            "properties": {
                "literalValue": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryKeyLiteralValue:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryKeyLiteralValue",
                    "description": "Passing a literal value\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryKeyLiteralValue:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryKeyLiteralValue": {
            "properties": {
                "stringValue": {
                    "type": "string",
                    "description": "String.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryValue:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryValue": {
            "properties": {
                "literalValue": {
                    "$ref": "#/types/gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryValueLiteralValue:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryValueLiteralValue",
                    "description": "Passing a literal value\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryValueLiteralValue:AuthConfigDecryptedCredentialOauth2ClientCredentialsTokenParamsEntryValueLiteralValue": {
            "properties": {
                "stringValue": {
                    "type": "string",
                    "description": "String.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialOidcToken:AuthConfigDecryptedCredentialOidcToken": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience to be used when generating OIDC token. The audience claim identifies the recipients that the JWT is intended for.\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "The service account email to be used as the identity for the token.\n"
                },
                "token": {
                    "type": "string",
                    "description": "(Output)\nID token obtained for the service account.\n"
                },
                "tokenExpireTime": {
                    "type": "string",
                    "description": "(Output)\nThe approximate time until the token retrieved is valid.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "token",
                        "tokenExpireTime"
                    ]
                }
            }
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialServiceAccountCredentials:AuthConfigDecryptedCredentialServiceAccountCredentials": {
            "properties": {
                "scope": {
                    "type": "string",
                    "description": "A space-delimited list of requested scope permissions.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Name of the service account that has the permission to make the request.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/AuthConfigDecryptedCredentialUsernameAndPassword:AuthConfigDecryptedCredentialUsernameAndPassword": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password to be used.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDecryptedCredentialOauth2AuthorizationCode\"\" pulumi-lang-dotnet=\"\"NestedDecryptedCredentialOauth2AuthorizationCode\"\" pulumi-lang-go=\"\"nestedDecryptedCredentialOauth2AuthorizationCode\"\" pulumi-lang-python=\"\"nested_decrypted_credential_oauth2_authorization_code\"\" pulumi-lang-yaml=\"\"nestedDecryptedCredentialOauth2AuthorizationCode\"\" pulumi-lang-java=\"\"nestedDecryptedCredentialOauth2AuthorizationCode\"\" pulumi-lang-hcl=\"\"nested_decrypted_credential_oauth2_authorization_code\"\"\u003e\"nestedDecryptedCredentialOauth2AuthorizationCode\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`oauth2AuthorizationCode`\" pulumi-lang-dotnet=\"`Oauth2AuthorizationCode`\" pulumi-lang-go=\"`oauth2AuthorizationCode`\" pulumi-lang-python=\"`oauth2_authorization_code`\" pulumi-lang-yaml=\"`oauth2AuthorizationCode`\" pulumi-lang-java=\"`oauth2AuthorizationCode`\" pulumi-lang-hcl=\"`oauth2_authorization_code`\"\u003e`oauth2AuthorizationCode`\u003c/span\u003e block supports:\n"
                },
                "username": {
                    "type": "string",
                    "description": "Username to be used.\n"
                }
            },
            "type": "object"
        },
        "gcp:applicationintegration/ClientCloudKmsConfig:ClientCloudKmsConfig": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "A Cloud KMS key is a named object containing one or more key versions, along\nwith metadata for the key. A key exists on exactly one key ring tied to a\nspecific location.\n",
                    "willReplaceOnChanges": true
                },
                "keyVersion": {
                    "type": "string",
                    "description": "Each version of a key contains key material used for encryption or signing.\nA key's version is represented by an integer, starting at 1. To decrypt data\nor verify a signature, you must use the same key version that was used to\nencrypt or sign the data.\n",
                    "willReplaceOnChanges": true
                },
                "kmsLocation": {
                    "type": "string",
                    "description": "Location name of the key ring, e.g. \"us-west1\".\n",
                    "willReplaceOnChanges": true
                },
                "kmsProjectId": {
                    "type": "string",
                    "description": "The Google Cloud project id of the project where the kms key stored. If empty,\nthe kms key is stored at the same project as customer's project and ecrypted\nwith CMEK, otherwise, the kms key is stored in the tenant project and\nencrypted with GMEK.\n",
                    "willReplaceOnChanges": true
                },
                "kmsRing": {
                    "type": "string",
                    "description": "A key ring organizes keys in a specific Google Cloud location and allows you to\nmanage access control on groups of keys. A key ring's name does not need to be\nunique across a Google Cloud project, but must be unique within a given location.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key",
                "kmsLocation",
                "kmsRing"
            ]
        },
        "gcp:artifactregistry/RepositoryCleanupPolicy:RepositoryCleanupPolicy": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Policy action.\nPossible values are: `DELETE`, `KEEP`.\n"
                },
                "condition": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryCleanupPolicyCondition:RepositoryCleanupPolicyCondition",
                    "description": "Policy condition for matching versions.\nStructure is documented below.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "mostRecentVersions": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryCleanupPolicyMostRecentVersions:RepositoryCleanupPolicyMostRecentVersions",
                    "description": "Policy condition for retaining a minimum number of versions. May only be\nspecified with a Keep action.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:artifactregistry/RepositoryCleanupPolicyCondition:RepositoryCleanupPolicyCondition": {
            "properties": {
                "newerThan": {
                    "type": "string",
                    "description": "Match versions newer than a duration.\n"
                },
                "olderThan": {
                    "type": "string",
                    "description": "Match versions older than a duration.\n"
                },
                "packageNamePrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Match versions by package prefix. Applied on any prefix match.\n"
                },
                "tagPrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Match versions by tag prefix. Applied on any prefix match.\n"
                },
                "tagState": {
                    "type": "string",
                    "description": "Match versions by tag status.\nDefault value is `ANY`.\nPossible values are: `TAGGED`, `UNTAGGED`, `ANY`.\n"
                },
                "versionNamePrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Match versions by version name prefix. Applied on any prefix match.\n"
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryCleanupPolicyMostRecentVersions:RepositoryCleanupPolicyMostRecentVersions": {
            "properties": {
                "keepCount": {
                    "type": "integer",
                    "description": "Minimum number of versions to keep.\n"
                },
                "packageNamePrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Match versions by package prefix. Applied on any prefix match.\n"
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryDockerConfig:RepositoryDockerConfig": {
            "properties": {
                "immutableTags": {
                    "type": "boolean",
                    "description": "The repository which enabled this flag prevents all tags from being modified, moved or deleted. This does not prevent tags from being created.\n"
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryIamBindingCondition:RepositoryIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:artifactregistry/RepositoryIamMemberCondition:RepositoryIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:artifactregistry/RepositoryMavenConfig:RepositoryMavenConfig": {
            "properties": {
                "allowSnapshotOverwrites": {
                    "type": "boolean",
                    "description": "The repository with this flag will allow publishing the same\nsnapshot versions.\n",
                    "willReplaceOnChanges": true
                },
                "versionPolicy": {
                    "type": "string",
                    "description": "Version policy defines the versions that the registry will accept.\nDefault value is `VERSION_POLICY_UNSPECIFIED`.\nPossible values are: `VERSION_POLICY_UNSPECIFIED`, `RELEASE`, `SNAPSHOT`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfig:RepositoryRemoteRepositoryConfig": {
            "properties": {
                "aptRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigAptRepository:RepositoryRemoteRepositoryConfigAptRepository",
                    "description": "Specific settings for an Apt remote repository.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "commonRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigCommonRepository:RepositoryRemoteRepositoryConfigCommonRepository",
                    "description": "Specific settings for an Artifact Registory remote repository.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "The description of the remote source.\n",
                    "willReplaceOnChanges": true
                },
                "disableUpstreamValidation": {
                    "type": "boolean",
                    "description": "If true, the remote repository upstream and upstream credentials will\nnot be validated.\n"
                },
                "dockerRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigDockerRepository:RepositoryRemoteRepositoryConfigDockerRepository",
                    "description": "Specific settings for a Docker remote repository.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "mavenRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigMavenRepository:RepositoryRemoteRepositoryConfigMavenRepository",
                    "description": "Specific settings for a Maven remote repository.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "npmRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigNpmRepository:RepositoryRemoteRepositoryConfigNpmRepository",
                    "description": "Specific settings for an Npm remote repository.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "pythonRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigPythonRepository:RepositoryRemoteRepositoryConfigPythonRepository",
                    "description": "Specific settings for a Python remote repository.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "upstreamCredentials": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigUpstreamCredentials:RepositoryRemoteRepositoryConfigUpstreamCredentials",
                    "description": "The credentials used to access the remote repository.\nStructure is documented below.\n"
                },
                "yumRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigYumRepository:RepositoryRemoteRepositoryConfigYumRepository",
                    "description": "Specific settings for an Yum remote repository.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigAptRepository:RepositoryRemoteRepositoryConfigAptRepository": {
            "properties": {
                "publicRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigAptRepositoryPublicRepository:RepositoryRemoteRepositoryConfigAptRepositoryPublicRepository",
                    "description": "One of the publicly available Apt repositories supported by Artifact Registry.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigAptRepositoryPublicRepository:RepositoryRemoteRepositoryConfigAptRepositoryPublicRepository": {
            "properties": {
                "repositoryBase": {
                    "type": "string",
                    "description": "A common public repository base for Yum.\nPossible values are: `CENTOS`, `CENTOS_DEBUG`, `CENTOS_VAULT`, `CENTOS_STREAM`, `ROCKY`, `EPEL`.\n",
                    "willReplaceOnChanges": true
                },
                "repositoryPath": {
                    "type": "string",
                    "description": "Specific repository from the base, e.g. `\"pub/rocky/9/BaseOS/x86_64/os\"`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "repositoryBase",
                "repositoryPath"
            ]
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigCommonRepository:RepositoryRemoteRepositoryConfigCommonRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "One of:\na. Artifact Registry Repository resource, e.g. `projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY`\nb. URI to the registry, e.g. `\"https://registry-1.docker.io\"`\nc. URI to Artifact Registry Repository, e.g. `\"https://REGION-docker.pkg.dev/UPSTREAM_PROJECT_ID/UPSTREAM_REPOSITORY\"`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "uri"
            ]
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigDockerRepository:RepositoryRemoteRepositoryConfigDockerRepository": {
            "properties": {
                "customRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository:RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository",
                    "description": "[Deprecated, please use commonRepository instead] Settings for a remote repository with a custom uri.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "publicRepository": {
                    "type": "string",
                    "description": "Address of the remote repository.\nPossible values are: `DOCKER_HUB`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository:RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "Specific uri to the registry, e.g. `\"https://pypi.io\"`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigMavenRepository:RepositoryRemoteRepositoryConfigMavenRepository": {
            "properties": {
                "customRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository:RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository",
                    "description": "[Deprecated, please use commonRepository instead] Settings for a remote repository with a custom uri.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "publicRepository": {
                    "type": "string",
                    "description": "Address of the remote repository.\nPossible values are: `MAVEN_CENTRAL`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository:RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "Specific uri to the registry, e.g. `\"https://pypi.io\"`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigNpmRepository:RepositoryRemoteRepositoryConfigNpmRepository": {
            "properties": {
                "customRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository:RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository",
                    "description": "[Deprecated, please use commonRepository instead] Settings for a remote repository with a custom uri.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "publicRepository": {
                    "type": "string",
                    "description": "Address of the remote repository.\nPossible values are: `NPMJS`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository:RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "Specific uri to the registry, e.g. `\"https://pypi.io\"`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigPythonRepository:RepositoryRemoteRepositoryConfigPythonRepository": {
            "properties": {
                "customRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository:RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository",
                    "description": "[Deprecated, please use commonRepository instead] Settings for a remote repository with a custom uri.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "publicRepository": {
                    "type": "string",
                    "description": "Address of the remote repository.\nPossible values are: `PYPI`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository:RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "Specific uri to the registry, e.g. `\"https://pypi.io\"`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigUpstreamCredentials:RepositoryRemoteRepositoryConfigUpstreamCredentials": {
            "properties": {
                "usernamePasswordCredentials": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentials:RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentials",
                    "description": "Use username and password to access the remote repository.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentials:RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentials": {
            "properties": {
                "passwordSecretVersion": {
                    "type": "string",
                    "description": "The Secret Manager key version that holds the password to access the\nremote repository. Must be in the format of\n`projects/{project}/secrets/{secret}/versions/{version}`.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The username to access the remote repository.\n"
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigYumRepository:RepositoryRemoteRepositoryConfigYumRepository": {
            "properties": {
                "publicRepository": {
                    "$ref": "#/types/gcp:artifactregistry/RepositoryRemoteRepositoryConfigYumRepositoryPublicRepository:RepositoryRemoteRepositoryConfigYumRepositoryPublicRepository",
                    "description": "One of the publicly available Yum repositories supported by Artifact Registry.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryRemoteRepositoryConfigYumRepositoryPublicRepository:RepositoryRemoteRepositoryConfigYumRepositoryPublicRepository": {
            "properties": {
                "repositoryBase": {
                    "type": "string",
                    "description": "A common public repository base for Yum.\nPossible values are: `CENTOS`, `CENTOS_DEBUG`, `CENTOS_VAULT`, `CENTOS_STREAM`, `ROCKY`, `EPEL`.\n",
                    "willReplaceOnChanges": true
                },
                "repositoryPath": {
                    "type": "string",
                    "description": "Specific repository from the base, e.g. `\"pub/rocky/9/BaseOS/x86_64/os\"`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "repositoryBase",
                "repositoryPath"
            ]
        },
        "gcp:artifactregistry/RepositoryVirtualRepositoryConfig:RepositoryVirtualRepositoryConfig": {
            "properties": {
                "upstreamPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/RepositoryVirtualRepositoryConfigUpstreamPolicy:RepositoryVirtualRepositoryConfigUpstreamPolicy"
                    },
                    "description": "Policies that configure the upstream artifacts distributed by the Virtual\nRepository. Upstream policies cannot be set on a standard repository.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryVirtualRepositoryConfigUpstreamPolicy:RepositoryVirtualRepositoryConfigUpstreamPolicy": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The user-provided ID of the upstream policy.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Entries with a greater priority value take precedence in the pull order.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "A reference to the repository resource, for example:\n\"projects/p1/locations/us-central1/repository/repo1\".\n"
                }
            },
            "type": "object"
        },
        "gcp:artifactregistry/RepositoryVulnerabilityScanningConfig:RepositoryVulnerabilityScanningConfig": {
            "properties": {
                "enablementConfig": {
                    "type": "string",
                    "description": "This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository.\nPossible values are: `INHERITED`, `DISABLED`.\n"
                },
                "enablementState": {
                    "type": "string",
                    "description": "(Output)\nThis field returns whether scanning is active for this repository.\n"
                },
                "enablementStateReason": {
                    "type": "string",
                    "description": "(Output)\nThis provides an explanation for the state of scanning on this repository.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enablementState",
                        "enablementStateReason"
                    ]
                }
            }
        },
        "gcp:artifactregistry/RuleCondition:RuleCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Optional. Description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Optional. String indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Optional. Title for the expression, i.e. a short string describing its purpose.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:artifactregistry/getDockerImagesDockerImage:getDockerImagesDockerImage": {
            "properties": {
                "buildTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this image was built.\n"
                },
                "imageName": {
                    "type": "string",
                    "description": "Extracted short name of the image (last part of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e, without tag or digest). For example, from `.../nginx@sha256:...` → \u003cspan pulumi-lang-nodejs=\"`nginx`\" pulumi-lang-dotnet=\"`Nginx`\" pulumi-lang-go=\"`nginx`\" pulumi-lang-python=\"`nginx`\" pulumi-lang-yaml=\"`nginx`\" pulumi-lang-java=\"`nginx`\" pulumi-lang-hcl=\"`nginx`\"\u003e`nginx`\u003c/span\u003e.\n"
                },
                "imageSizeBytes": {
                    "type": "string",
                    "description": "Calculated size of the image in bytes.\n"
                },
                "mediaType": {
                    "type": "string",
                    "description": "Media type of this image, e.g. `application/vnd.docker.distribution.manifest.v2+json`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The fully qualified name of the fetched image.  This name has the form: `projects/{{project}}/locations/{{location}}/repository/{{repository_id}}/dockerImages/{{docker_image}}`. For example, `projects/test-project/locations/us-west4/repositories/test-repo/dockerImages/nginx@sha256:e9954c1fc875017be1c3e36eca16be2d9e9bccc4bf072163515467d6a823c7cf`\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "The URI to access the image.  For example, `us-west4-docker.pkg.dev/test-project/test-repo/nginx@sha256:e9954c1fc875017be1c3e36eca16be2d9e9bccc4bf072163515467d6a823c7cf`\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of all tags associated with the image.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this image was updated.\n"
                },
                "uploadTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, the image was uploaded. For example, `2014-10-02T15:01:23.045123456Z`.\n"
                }
            },
            "type": "object",
            "required": [
                "buildTime",
                "imageName",
                "imageSizeBytes",
                "mediaType",
                "name",
                "selfLink",
                "tags",
                "updateTime",
                "uploadTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getMavenArtifactsMavenArtifact:getMavenArtifactsMavenArtifact": {
            "properties": {
                "artifactId": {
                    "type": "string",
                    "description": "The name of the artifact to fetch.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "The time the artifact was created.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "Group ID for the artifact.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The fully qualified name of the fetched artifact. Format:\n```\nprojects/{{project}}/locations/{{location}}/repositories/{{repository_id}}/mavenArtifacts/{{group_id}}:{{artifact_id}}:{{version}}\n```\n"
                },
                "pomUri": {
                    "type": "string",
                    "description": "URL to access the pom file of the artifact.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time the artifact was last updated.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the Maven artifact.\n"
                }
            },
            "type": "object",
            "required": [
                "artifactId",
                "createTime",
                "groupId",
                "name",
                "pomUri",
                "updateTime",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getNpmPackagesNpmPackage:getNpmPackagesNpmPackage": {
            "properties": {
                "createTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this package was created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The fully qualified name of the fetched package.  This name has the form: `projects/{{project}}/locations/{{location}}/repository/{{repository_id}}/npmPackages/{{npmPackage}}`. For example, `projects/example-project/locations/us-central1/repository/example-repo/npmPackages/my-test-package:0.0.1`\n"
                },
                "packageName": {
                    "type": "string",
                    "description": "Extracted short name of the package (last part of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e, without version). For example, from `.../my-test-package:0.0.1` → `my-test-package`.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tags associated with the Npm package.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this package was updated.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of this package.\n"
                }
            },
            "type": "object",
            "required": [
                "createTime",
                "name",
                "packageName",
                "tags",
                "updateTime",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getPackagesPackage:getPackagesPackage": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Client specified annotations.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this package was created.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the package.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the package, for example: `projects/p1/locations/us-central1/repositories/repo1/packages/pkg1`. If the package ID part contains slashes, the slashes are escaped.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this package was last updated. This includes publishing a new version of the package.\n"
                }
            },
            "type": "object",
            "required": [
                "annotations",
                "createTime",
                "displayName",
                "name",
                "updateTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getPythonPackagesPythonPackage:getPythonPackagesPythonPackage": {
            "properties": {
                "createTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this package was created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The fully qualified name of the fetched package.  This name has the form: `projects/{{project}}/locations/{{location}}/repository/{{repository_id}}/pythonPackages/{{pythonPackage}}`. For example, `projects/example-project/locations/us-central1/repository/example-repo/pythonPackages/my-test-package:0.0.1`\n"
                },
                "packageName": {
                    "type": "string",
                    "description": "Extracted short name of the package (last part of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e, without version). For example, from `.../my-test-package:0.0.1` → `my-test-package`.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this package was updated.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of this package.\n"
                }
            },
            "type": "object",
            "required": [
                "createTime",
                "name",
                "packageName",
                "updateTime",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoriesRepository:getRepositoriesRepository": {
            "properties": {
                "createTime": {
                    "type": "string",
                    "description": "The time when the repository was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The user-provided description of the repository.\n"
                },
                "format": {
                    "type": "string",
                    "description": "The format of packages that are stored in the repository. Supported formats can be found [here](https://cloud.google.com/artifact-registry/docs/supported-formats).\n"
                },
                "id": {
                    "type": "string",
                    "description": "An identifier for the resource with format `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n"
                },
                "repositoryId": {
                    "type": "string",
                    "description": "The last part of the repository name, for example: `\"repo1\"`\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time when the repository was last updated.\n"
                }
            },
            "type": "object",
            "required": [
                "createTime",
                "description",
                "format",
                "id",
                "repositoryId",
                "updateTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryCleanupPolicy:getRepositoryCleanupPolicy": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Policy action. Possible values: [\"DELETE\", \"KEEP\"]\n"
                },
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryCleanupPolicyCondition:getRepositoryCleanupPolicyCondition"
                    },
                    "description": "Policy condition for matching versions.\n"
                },
                "id": {
                    "type": "string"
                },
                "mostRecentVersions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryCleanupPolicyMostRecentVersion:getRepositoryCleanupPolicyMostRecentVersion"
                    },
                    "description": "Policy condition for retaining a minimum number of versions. May only be\nspecified with a Keep action.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "conditions",
                "id",
                "mostRecentVersions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryCleanupPolicyCondition:getRepositoryCleanupPolicyCondition": {
            "properties": {
                "newerThan": {
                    "type": "string",
                    "description": "Match versions newer than a duration.\n"
                },
                "olderThan": {
                    "type": "string",
                    "description": "Match versions older than a duration.\n"
                },
                "packageNamePrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Match versions by package prefix. Applied on any prefix match.\n"
                },
                "tagPrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Match versions by tag prefix. Applied on any prefix match.\n"
                },
                "tagState": {
                    "type": "string",
                    "description": "Match versions by tag status. Default value: \"ANY\" Possible values: [\"TAGGED\", \"UNTAGGED\", \"ANY\"]\n"
                },
                "versionNamePrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Match versions by version name prefix. Applied on any prefix match.\n"
                }
            },
            "type": "object",
            "required": [
                "newerThan",
                "olderThan",
                "packageNamePrefixes",
                "tagPrefixes",
                "tagState",
                "versionNamePrefixes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryCleanupPolicyMostRecentVersion:getRepositoryCleanupPolicyMostRecentVersion": {
            "properties": {
                "keepCount": {
                    "type": "integer",
                    "description": "Minimum number of versions to keep.\n"
                },
                "packageNamePrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Match versions by package prefix. Applied on any prefix match.\n"
                }
            },
            "type": "object",
            "required": [
                "keepCount",
                "packageNamePrefixes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryDockerConfig:getRepositoryDockerConfig": {
            "properties": {
                "immutableTags": {
                    "type": "boolean",
                    "description": "The repository which enabled this flag prevents all tags from being modified, moved or deleted. This does not prevent tags from being created.\n"
                }
            },
            "type": "object",
            "required": [
                "immutableTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryMavenConfig:getRepositoryMavenConfig": {
            "properties": {
                "allowSnapshotOverwrites": {
                    "type": "boolean",
                    "description": "The repository with this flag will allow publishing the same\nsnapshot versions.\n"
                },
                "versionPolicy": {
                    "type": "string",
                    "description": "Version policy defines the versions that the registry will accept. Default value: \"VERSION_POLICY_UNSPECIFIED\" Possible values: [\"VERSION_POLICY_UNSPECIFIED\", \"RELEASE\", \"SNAPSHOT\"]\n"
                }
            },
            "type": "object",
            "required": [
                "allowSnapshotOverwrites",
                "versionPolicy"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfig:getRepositoryRemoteRepositoryConfig": {
            "properties": {
                "aptRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigAptRepository:getRepositoryRemoteRepositoryConfigAptRepository"
                    },
                    "description": "Specific settings for an Apt remote repository.\n"
                },
                "commonRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigCommonRepository:getRepositoryRemoteRepositoryConfigCommonRepository"
                    },
                    "description": "Specific settings for an Artifact Registory remote repository.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the remote source.\n"
                },
                "disableUpstreamValidation": {
                    "type": "boolean",
                    "description": "If true, the remote repository upstream and upstream credentials will\nnot be validated.\n"
                },
                "dockerRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigDockerRepository:getRepositoryRemoteRepositoryConfigDockerRepository"
                    },
                    "description": "Specific settings for a Docker remote repository.\n"
                },
                "mavenRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigMavenRepository:getRepositoryRemoteRepositoryConfigMavenRepository"
                    },
                    "description": "Specific settings for a Maven remote repository.\n"
                },
                "npmRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigNpmRepository:getRepositoryRemoteRepositoryConfigNpmRepository"
                    },
                    "description": "Specific settings for an Npm remote repository.\n"
                },
                "pythonRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigPythonRepository:getRepositoryRemoteRepositoryConfigPythonRepository"
                    },
                    "description": "Specific settings for a Python remote repository.\n"
                },
                "upstreamCredentials": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigUpstreamCredential:getRepositoryRemoteRepositoryConfigUpstreamCredential"
                    },
                    "description": "The credentials used to access the remote repository.\n"
                },
                "yumRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigYumRepository:getRepositoryRemoteRepositoryConfigYumRepository"
                    },
                    "description": "Specific settings for an Yum remote repository.\n"
                }
            },
            "type": "object",
            "required": [
                "aptRepositories",
                "commonRepositories",
                "description",
                "disableUpstreamValidation",
                "dockerRepositories",
                "mavenRepositories",
                "npmRepositories",
                "pythonRepositories",
                "upstreamCredentials",
                "yumRepositories"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigAptRepository:getRepositoryRemoteRepositoryConfigAptRepository": {
            "properties": {
                "publicRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigAptRepositoryPublicRepository:getRepositoryRemoteRepositoryConfigAptRepositoryPublicRepository"
                    },
                    "description": "One of the publicly available Apt repositories supported by Artifact Registry.\n"
                }
            },
            "type": "object",
            "required": [
                "publicRepositories"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigAptRepositoryPublicRepository:getRepositoryRemoteRepositoryConfigAptRepositoryPublicRepository": {
            "properties": {
                "repositoryBase": {
                    "type": "string",
                    "description": "A common public repository base for Apt, e.g. '\"debian/dists/stable\"' Possible values: [\"DEBIAN\", \"UBUNTU\", \"DEBIAN_SNAPSHOT\"]\n"
                },
                "repositoryPath": {
                    "type": "string",
                    "description": "Specific repository from the base.\n"
                }
            },
            "type": "object",
            "required": [
                "repositoryBase",
                "repositoryPath"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigCommonRepository:getRepositoryRemoteRepositoryConfigCommonRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "One of:\na. Artifact Registry Repository resource, e.g. 'projects/UPSTREAM_PROJECT_ID/locations/REGION/repositories/UPSTREAM_REPOSITORY'\nb. URI to the registry, e.g. '\"https://registry-1.docker.io\"'\nc. URI to Artifact Registry Repository, e.g. '\"https://REGION-docker.pkg.dev/UPSTREAM_PROJECT_ID/UPSTREAM_REPOSITORY\"'\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigDockerRepository:getRepositoryRemoteRepositoryConfigDockerRepository": {
            "properties": {
                "customRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository"
                    },
                    "description": "[Deprecated, please use commonRepository instead] Settings for a remote repository with a custom uri.\n"
                },
                "publicRepository": {
                    "type": "string",
                    "description": "Address of the remote repository. Possible values: [\"DOCKER_HUB\"]\n"
                }
            },
            "type": "object",
            "required": [
                "customRepositories",
                "publicRepository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigDockerRepositoryCustomRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "Specific uri to the registry, e.g. '\"https://registry-1.docker.io\"'\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigMavenRepository:getRepositoryRemoteRepositoryConfigMavenRepository": {
            "properties": {
                "customRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository"
                    },
                    "description": "[Deprecated, please use commonRepository instead] Settings for a remote repository with a custom uri.\n"
                },
                "publicRepository": {
                    "type": "string",
                    "description": "Address of the remote repository. Possible values: [\"MAVEN_CENTRAL\"]\n"
                }
            },
            "type": "object",
            "required": [
                "customRepositories",
                "publicRepository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigMavenRepositoryCustomRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "Specific uri to the registry, e.g. '\"https://repo.maven.apache.org/maven2\"'\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigNpmRepository:getRepositoryRemoteRepositoryConfigNpmRepository": {
            "properties": {
                "customRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository"
                    },
                    "description": "[Deprecated, please use commonRepository instead] Settings for a remote repository with a custom uri.\n"
                },
                "publicRepository": {
                    "type": "string",
                    "description": "Address of the remote repository. Possible values: [\"NPMJS\"]\n"
                }
            },
            "type": "object",
            "required": [
                "customRepositories",
                "publicRepository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigNpmRepositoryCustomRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "Specific uri to the registry, e.g. '\"https://registry.npmjs.org\"'\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigPythonRepository:getRepositoryRemoteRepositoryConfigPythonRepository": {
            "properties": {
                "customRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository"
                    },
                    "description": "[Deprecated, please use commonRepository instead] Settings for a remote repository with a custom uri.\n"
                },
                "publicRepository": {
                    "type": "string",
                    "description": "Address of the remote repository. Possible values: [\"PYPI\"]\n"
                }
            },
            "type": "object",
            "required": [
                "customRepositories",
                "publicRepository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository:getRepositoryRemoteRepositoryConfigPythonRepositoryCustomRepository": {
            "properties": {
                "uri": {
                    "type": "string",
                    "description": "Specific uri to the registry, e.g. '\"https://pypi.io\"'\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigUpstreamCredential:getRepositoryRemoteRepositoryConfigUpstreamCredential": {
            "properties": {
                "usernamePasswordCredentials": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredential:getRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredential"
                    },
                    "description": "Use username and password to access the remote repository.\n"
                }
            },
            "type": "object",
            "required": [
                "usernamePasswordCredentials"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredential:getRepositoryRemoteRepositoryConfigUpstreamCredentialUsernamePasswordCredential": {
            "properties": {
                "passwordSecretVersion": {
                    "type": "string",
                    "description": "The Secret Manager key version that holds the password to access the\nremote repository. Must be in the format of\n'projects/{project}/secrets/{secret}/versions/{version}'.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The username to access the remote repository.\n"
                }
            },
            "type": "object",
            "required": [
                "passwordSecretVersion",
                "username"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigYumRepository:getRepositoryRemoteRepositoryConfigYumRepository": {
            "properties": {
                "publicRepositories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryRemoteRepositoryConfigYumRepositoryPublicRepository:getRepositoryRemoteRepositoryConfigYumRepositoryPublicRepository"
                    },
                    "description": "One of the publicly available Yum repositories supported by Artifact Registry.\n"
                }
            },
            "type": "object",
            "required": [
                "publicRepositories"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryRemoteRepositoryConfigYumRepositoryPublicRepository:getRepositoryRemoteRepositoryConfigYumRepositoryPublicRepository": {
            "properties": {
                "repositoryBase": {
                    "type": "string",
                    "description": "A common public repository base for Yum. Possible values: [\"CENTOS\", \"CENTOS_DEBUG\", \"CENTOS_VAULT\", \"CENTOS_STREAM\", \"ROCKY\", \"EPEL\"]\n"
                },
                "repositoryPath": {
                    "type": "string",
                    "description": "Specific repository from the base, e.g. '\"pub/rocky/9/BaseOS/x86_64/os\"'\n"
                }
            },
            "type": "object",
            "required": [
                "repositoryBase",
                "repositoryPath"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryVirtualRepositoryConfig:getRepositoryVirtualRepositoryConfig": {
            "properties": {
                "upstreamPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getRepositoryVirtualRepositoryConfigUpstreamPolicy:getRepositoryVirtualRepositoryConfigUpstreamPolicy"
                    },
                    "description": "Policies that configure the upstream artifacts distributed by the Virtual\nRepository. Upstream policies cannot be set on a standard repository.\n"
                }
            },
            "type": "object",
            "required": [
                "upstreamPolicies"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryVirtualRepositoryConfigUpstreamPolicy:getRepositoryVirtualRepositoryConfigUpstreamPolicy": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The user-provided ID of the upstream policy.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Entries with a greater priority value take precedence in the pull order.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "A reference to the repository resource, for example:\n\"projects/p1/locations/us-central1/repository/repo1\".\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "priority",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getRepositoryVulnerabilityScanningConfig:getRepositoryVulnerabilityScanningConfig": {
            "properties": {
                "enablementConfig": {
                    "type": "string",
                    "description": "This configures whether vulnerability scanning is automatically performed for artifacts pushed to this repository. Possible values: [\"INHERITED\", \"DISABLED\"]\n"
                },
                "enablementState": {
                    "type": "string",
                    "description": "This field returns whether scanning is active for this repository.\n"
                },
                "enablementStateReason": {
                    "type": "string",
                    "description": "This provides an explanation for the state of scanning on this repository.\n"
                }
            },
            "type": "object",
            "required": [
                "enablementConfig",
                "enablementState",
                "enablementStateReason"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getTagsTag:getTagsTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the tag, for example: `projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/tags/tag1`. If the package part contains slashes, the slashes are escaped.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the tag.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getVersionRelatedTag:getVersionRelatedTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the version, for example: `projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/version1`. If the package part contains slashes, the slashes are escaped.\n"
                },
                "version": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "name",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getVersionsVersion:getVersionsVersion": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Client specified annotations.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this package was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the version, as specified in its metadata.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the version, for example: `projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/version1`. If the package part contains slashes, the slashes are escaped.\n"
                },
                "relatedTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:artifactregistry/getVersionsVersionRelatedTag:getVersionsVersionRelatedTag"
                    },
                    "description": "A list of related tags. Will contain up to 100 tags that reference this version.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time, as a RFC 3339 string, this package was last updated. This includes publishing a new version of the package.\n"
                }
            },
            "type": "object",
            "required": [
                "annotations",
                "createTime",
                "description",
                "name",
                "relatedTags",
                "updateTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:artifactregistry/getVersionsVersionRelatedTag:getVersionsVersionRelatedTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the version, for example: `projects/p1/locations/us-central1/repositories/repo1/packages/pkg1/versions/version1`. If the package part contains slashes, the slashes are escaped.\n"
                },
                "version": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "name",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:assuredworkloads/WorkloadComplianceStatus:WorkloadComplianceStatus": {
            "properties": {
                "acknowledgedViolationCounts": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Number of current orgPolicy violations which are acknowledged.\n"
                },
                "activeViolationCounts": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Number of current orgPolicy violations which are not acknowledged.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "acknowledgedViolationCounts",
                        "activeViolationCounts"
                    ]
                }
            }
        },
        "gcp:assuredworkloads/WorkloadEkmProvisioningResponse:WorkloadEkmProvisioningResponse": {
            "properties": {
                "ekmProvisioningErrorDomain": {
                    "type": "string",
                    "description": "Indicates Ekm provisioning error if any. Possible values: EKM_PROVISIONING_ERROR_DOMAIN_UNSPECIFIED, UNSPECIFIED_ERROR, GOOGLE_SERVER_ERROR, EXTERNAL_USER_ERROR, EXTERNAL_PARTNER_ERROR, TIMEOUT_ERROR\n"
                },
                "ekmProvisioningErrorMapping": {
                    "type": "string",
                    "description": "Detailed error message if Ekm provisioning fails Possible values: EKM_PROVISIONING_ERROR_MAPPING_UNSPECIFIED, INVALID_SERVICE_ACCOUNT, MISSING_METRICS_SCOPE_ADMIN_PERMISSION, MISSING_EKM_CONNECTION_ADMIN_PERMISSION\n"
                },
                "ekmProvisioningState": {
                    "type": "string",
                    "description": "Indicates Ekm enrollment Provisioning of a given workload. Possible values: EKM_PROVISIONING_STATE_UNSPECIFIED, EKM_PROVISIONING_STATE_PENDING, EKM_PROVISIONING_STATE_FAILED, EKM_PROVISIONING_STATE_COMPLETED\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ekmProvisioningErrorDomain",
                        "ekmProvisioningErrorMapping",
                        "ekmProvisioningState"
                    ]
                }
            }
        },
        "gcp:assuredworkloads/WorkloadKmsSettings:WorkloadKmsSettings": {
            "properties": {
                "nextRotationTime": {
                    "type": "string",
                    "description": "Required. Input only. Immutable. The time at which the Key Management Service will automatically create a new version of the crypto key and mark it as the primary.\n",
                    "willReplaceOnChanges": true
                },
                "rotationPeriod": {
                    "type": "string",
                    "description": "Required. Input only. Immutable. will be advanced by this period when the Key Management Service automatically rotates a key. Must be at least 24 hours and at most 876,000 hours.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "nextRotationTime",
                "rotationPeriod"
            ]
        },
        "gcp:assuredworkloads/WorkloadPartnerPermissions:WorkloadPartnerPermissions": {
            "properties": {
                "assuredWorkloadsMonitoring": {
                    "type": "boolean",
                    "description": "Optional. Allow partner to view violation alerts.\n",
                    "willReplaceOnChanges": true
                },
                "dataLogsViewer": {
                    "type": "boolean",
                    "description": "Allow the partner to view inspectability logs and monitoring violations.\n",
                    "willReplaceOnChanges": true
                },
                "serviceAccessApprover": {
                    "type": "boolean",
                    "description": "Optional. Allow partner to view access approval logs.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:assuredworkloads/WorkloadResource:WorkloadResource": {
            "properties": {
                "resourceId": {
                    "type": "integer",
                    "description": "Resource identifier. For a project this represents project_number.\n"
                },
                "resourceType": {
                    "type": "string",
                    "description": "Indicates the type of resource. Possible values: RESOURCE_TYPE_UNSPECIFIED, CONSUMER_PROJECT, ENCRYPTION_KEYS_PROJECT, KEYRING, CONSUMER_FOLDER\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "resourceId",
                        "resourceType"
                    ]
                }
            }
        },
        "gcp:assuredworkloads/WorkloadResourceSetting:WorkloadResourceSetting": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "User-assigned resource display name. If not empty it will be used to create a resource with the specified name.\n",
                    "willReplaceOnChanges": true
                },
                "resourceId": {
                    "type": "string",
                    "description": "Resource identifier. For a project this represents projectId. If the project is already taken, the workload creation will fail. For KeyRing, this represents the keyring_id. For a folder, don't set this value as\u003cspan pulumi-lang-nodejs=\" folderId \" pulumi-lang-dotnet=\" FolderId \" pulumi-lang-go=\" folderId \" pulumi-lang-python=\" folder_id \" pulumi-lang-yaml=\" folderId \" pulumi-lang-java=\" folderId \" pulumi-lang-hcl=\" folder_id \"\u003e folderId \u003c/span\u003eis assigned by Google.\n",
                    "willReplaceOnChanges": true
                },
                "resourceType": {
                    "type": "string",
                    "description": "Indicates the type of resource. This field should be specified to correspond the id to the right project type (CONSUMER_PROJECT or ENCRYPTION_KEYS_PROJECT) Possible values: RESOURCE_TYPE_UNSPECIFIED, CONSUMER_PROJECT, ENCRYPTION_KEYS_PROJECT, KEYRING, CONSUMER_FOLDER\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:assuredworkloads/WorkloadSaaEnrollmentResponse:WorkloadSaaEnrollmentResponse": {
            "properties": {
                "setupErrors": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Indicates SAA enrollment setup error if any.\n"
                },
                "setupStatus": {
                    "type": "string",
                    "description": "Indicates SAA enrollment status of a given workload. Possible values: SETUP_STATE_UNSPECIFIED, STATUS_PENDING, STATUS_COMPLETE\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "setupErrors",
                        "setupStatus"
                    ]
                }
            }
        },
        "gcp:assuredworkloads/WorkloadWorkloadOptions:WorkloadWorkloadOptions": {
            "properties": {
                "kajEnrollmentType": {
                    "type": "string",
                    "description": "Indicates type of KAJ enrollment for the workload. Currently, only specifiying KEY_ACCESS_TRANSPARENCY_OFF is implemented to not enroll in KAT-level KAJ enrollment for Regional Controls workloads. Possible values: KAJ_ENROLLMENT_TYPE_UNSPECIFIED, FULL_KAJ, EKM_ONLY, KEY_ACCESS_TRANSPARENCY_OFF\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/BackupPlanAssociationRulesConfigInfo:BackupPlanAssociationRulesConfigInfo": {
            "properties": {
                "lastBackupErrors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/BackupPlanAssociationRulesConfigInfoLastBackupError:BackupPlanAssociationRulesConfigInfoLastBackupError"
                    },
                    "description": "(Output)\ngoogle.rpc.Status object to store the last backup error\nStructure is documented below.\n"
                },
                "lastBackupState": {
                    "type": "string",
                    "description": "(Output)\nState of last backup taken.\n"
                },
                "lastSuccessfulBackupConsistencyTime": {
                    "type": "string",
                    "description": "(Output)\nThe point in time when the last successful backup was captured from the source\n"
                },
                "ruleId": {
                    "type": "string",
                    "description": "(Output)\nBackup Rule id fetched from backup plan.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "lastBackupErrors",
                        "lastBackupState",
                        "lastSuccessfulBackupConsistencyTime",
                        "ruleId"
                    ]
                }
            }
        },
        "gcp:backupdisasterrecovery/BackupPlanAssociationRulesConfigInfoLastBackupError:BackupPlanAssociationRulesConfigInfoLastBackupError": {
            "properties": {
                "code": {
                    "type": "number",
                    "description": "(Output)\nThe status code, which should be an enum value of [google.rpc.Code]\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nA developer-facing error message, which should be in English.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "code",
                        "message"
                    ]
                }
            }
        },
        "gcp:backupdisasterrecovery/BackupPlanBackupRule:BackupPlanBackupRule": {
            "properties": {
                "backupRetentionDays": {
                    "type": "integer",
                    "description": "Configures the duration for which backup data will be kept. The value should be greater than or equal to minimum enforced retention of the backup vault.\n"
                },
                "ruleId": {
                    "type": "string",
                    "description": "The unique ID of this `BackupRule`. The \u003cspan pulumi-lang-nodejs=\"`ruleId`\" pulumi-lang-dotnet=\"`RuleId`\" pulumi-lang-go=\"`ruleId`\" pulumi-lang-python=\"`rule_id`\" pulumi-lang-yaml=\"`ruleId`\" pulumi-lang-java=\"`ruleId`\" pulumi-lang-hcl=\"`rule_id`\"\u003e`ruleId`\u003c/span\u003e is unique per `BackupPlan`.\n"
                },
                "standardSchedule": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/BackupPlanBackupRuleStandardSchedule:BackupPlanBackupRuleStandardSchedule",
                    "description": "StandardSchedule defines a schedule that runs within the confines of a defined window of days.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "backupRetentionDays",
                "ruleId",
                "standardSchedule"
            ]
        },
        "gcp:backupdisasterrecovery/BackupPlanBackupRuleStandardSchedule:BackupPlanBackupRuleStandardSchedule": {
            "properties": {
                "backupWindow": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/BackupPlanBackupRuleStandardScheduleBackupWindow:BackupPlanBackupRuleStandardScheduleBackupWindow",
                    "description": "A BackupWindow defines the window of the day during which backup jobs will run. Jobs are queued at the beginning of the window and will be marked as\n`NOT_RUN` if they do not start by the end of the window.\nStructure is documented below.\n"
                },
                "daysOfMonths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Specifies days of months like 1, 5, or 14 on which jobs will run.\n"
                },
                "daysOfWeeks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies days of week like MONDAY or TUESDAY, on which jobs will run. This is required for \u003cspan pulumi-lang-nodejs=\"`recurrenceType`\" pulumi-lang-dotnet=\"`RecurrenceType`\" pulumi-lang-go=\"`recurrenceType`\" pulumi-lang-python=\"`recurrence_type`\" pulumi-lang-yaml=\"`recurrenceType`\" pulumi-lang-java=\"`recurrenceType`\" pulumi-lang-hcl=\"`recurrence_type`\"\u003e`recurrenceType`\u003c/span\u003e, `WEEKLY` and is not applicable otherwise.\nEach value may be one of: `DAY_OF_WEEK_UNSPECIFIED`, `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`.\n"
                },
                "hourlyFrequency": {
                    "type": "integer",
                    "description": "Specifies frequency for hourly backups. An hourly frequency of 2 means jobs will run every 2 hours from start time till end time defined.\nThis is required for \u003cspan pulumi-lang-nodejs=\"`recurrenceType`\" pulumi-lang-dotnet=\"`RecurrenceType`\" pulumi-lang-go=\"`recurrenceType`\" pulumi-lang-python=\"`recurrence_type`\" pulumi-lang-yaml=\"`recurrenceType`\" pulumi-lang-java=\"`recurrenceType`\" pulumi-lang-hcl=\"`recurrence_type`\"\u003e`recurrenceType`\u003c/span\u003e, `HOURLY` and is not applicable otherwise.\n"
                },
                "months": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies values of months\nEach value may be one of: `MONTH_UNSPECIFIED`, `JANUARY`, `FEBRUARY`, `MARCH`, `APRIL`, `MAY`, `JUNE`, `JULY`, `AUGUST`, `SEPTEMBER`, `OCTOBER`, `NOVEMBER`, `DECEMBER`.\n"
                },
                "recurrenceType": {
                    "type": "string",
                    "description": "RecurrenceType enumerates the applicable periodicity for the schedule.\nPossible values are: `HOURLY`, `DAILY`, `WEEKLY`, `MONTHLY`, `YEARLY`.\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "The time zone to be used when interpreting the schedule.\n"
                },
                "weekDayOfMonth": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/BackupPlanBackupRuleStandardScheduleWeekDayOfMonth:BackupPlanBackupRuleStandardScheduleWeekDayOfMonth",
                    "description": "Specifies a week day of the month like FIRST SUNDAY or LAST MONDAY, on which jobs will run.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "recurrenceType",
                "timeZone"
            ]
        },
        "gcp:backupdisasterrecovery/BackupPlanBackupRuleStandardScheduleBackupWindow:BackupPlanBackupRuleStandardScheduleBackupWindow": {
            "properties": {
                "endHourOfDay": {
                    "type": "integer",
                    "description": "The hour of the day (1-24) when the window ends, for example, if the value of end hour of the day is 10, that means the backup window end time is 10:00.\nThe end hour of the day should be greater than the start\n"
                },
                "startHourOfDay": {
                    "type": "integer",
                    "description": "The hour of the day (0-23) when the window starts, for example, if the value of the start hour of the day is 6, that means the backup window starts at 6:00.\n"
                }
            },
            "type": "object",
            "required": [
                "startHourOfDay"
            ]
        },
        "gcp:backupdisasterrecovery/BackupPlanBackupRuleStandardScheduleWeekDayOfMonth:BackupPlanBackupRuleStandardScheduleWeekDayOfMonth": {
            "properties": {
                "dayOfWeek": {
                    "type": "string",
                    "description": "Specifies the day of the week.\nPossible values are: `DAY_OF_WEEK_UNSPECIFIED`, `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`.\n"
                },
                "weekOfMonth": {
                    "type": "string",
                    "description": "WeekOfMonth enumerates possible weeks in the month, e.g. the first, third, or last week of the month.\nPossible values are: `WEEK_OF_MONTH_UNSPECIFIED`, `FIRST`, `SECOND`, `THIRD`, `FOURTH`, `LAST`.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfWeek",
                "weekOfMonth"
            ]
        },
        "gcp:backupdisasterrecovery/BackupPlanComputeInstanceBackupPlanProperties:BackupPlanComputeInstanceBackupPlanProperties": {
            "properties": {
                "guestFlush": {
                    "type": "boolean",
                    "description": "Indicates whether to perform a guest flush operation before taking a\ncompute instance backup. When set to true, the system will attempt\nto ensure application-consistent backups.\n"
                }
            },
            "type": "object",
            "required": [
                "guestFlush"
            ]
        },
        "gcp:backupdisasterrecovery/BackupPlanDiskBackupPlanProperties:BackupPlanDiskBackupPlanProperties": {
            "properties": {
                "guestFlush": {
                    "type": "boolean",
                    "description": "Indicates whether to perform a guest flush operation before taking a disk\nbackup. When set to true, the system will attempt to ensure\napplication-consistent backups. When set to false, the system will\ncreate crash-consistent backups.\n"
                }
            },
            "type": "object",
            "required": [
                "guestFlush"
            ]
        },
        "gcp:backupdisasterrecovery/BackupVaultEncryptionConfig:BackupVaultEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The Resource name of the Cloud KMS key to be used to encrypt new backups. The key must be in the same location as the backup vault. The key must be a Cloud KMS CryptoKey.\n"
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/ManagementServerManagementUri:ManagementServerManagementUri": {
            "properties": {
                "api": {
                    "type": "string",
                    "description": "(Output)\nThe management console api endpoint.\n"
                },
                "webUi": {
                    "type": "string",
                    "description": "(Output)\nThe management console webUi.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "api",
                        "webUi"
                    ]
                }
            }
        },
        "gcp:backupdisasterrecovery/ManagementServerNetwork:ManagementServerNetwork": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "Network with format `projects/{{project_id}}/global/networks/{{network_id}}`\n",
                    "willReplaceOnChanges": true
                },
                "peeringMode": {
                    "type": "string",
                    "description": "Type of Network peeringMode\nDefault value is `PRIVATE_SERVICE_ACCESS`.\nPossible values are: `PRIVATE_SERVICE_ACCESS`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "network"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestoreProperties:RestoreWorkloadComputeInstanceRestoreProperties": {
            "properties": {
                "advancedMachineFeatures": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesAdvancedMachineFeatures:RestoreWorkloadComputeInstanceRestorePropertiesAdvancedMachineFeatures",
                    "description": "Optional. Controls for advanced machine-related behavior features.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "allocationAffinity": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesAllocationAffinity:RestoreWorkloadComputeInstanceRestorePropertiesAllocationAffinity",
                    "description": "Optional. Specifies the reservations that this instance can consume from.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "canIpForward": {
                    "type": "boolean",
                    "description": "Optional. Allows this instance to send and receive packets with non-matching destination or source IPs.\n",
                    "willReplaceOnChanges": true
                },
                "confidentialInstanceConfig": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesConfidentialInstanceConfig:RestoreWorkloadComputeInstanceRestorePropertiesConfidentialInstanceConfig",
                    "description": "Optional. Controls Confidential compute options on the instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "deletionProtection": {
                    "type": "boolean",
                    "description": "Optional. Whether the resource should be protected against deletion.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "Optional. An optional description of this resource.\n",
                    "willReplaceOnChanges": true
                },
                "disks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDisk:RestoreWorkloadComputeInstanceRestorePropertiesDisk"
                    },
                    "description": "Optional. Array of disks associated with this instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "displayDevice": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDisplayDevice:RestoreWorkloadComputeInstanceRestorePropertiesDisplayDevice",
                    "description": "Optional. Enables display device for the instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "guestAccelerators": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesGuestAccelerator:RestoreWorkloadComputeInstanceRestorePropertiesGuestAccelerator"
                    },
                    "description": "Optional. A list of the type and count of accelerator cards attached to the instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "hostname": {
                    "type": "string",
                    "description": "Optional. Specifies the hostname of the instance.\n",
                    "willReplaceOnChanges": true
                },
                "instanceEncryptionKey": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesInstanceEncryptionKey:RestoreWorkloadComputeInstanceRestorePropertiesInstanceEncryptionKey",
                    "description": "Optional. Encrypts suspended data for an instance with a customer-managed encryption key.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "keyRevocationActionType": {
                    "type": "string",
                    "description": "Optional. KeyRevocationActionType of the instance.\nPossible values are: `KEY_REVOCATION_ACTION_TYPE_UNSPECIFIED`, `NONE`, `STOP`.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesLabel:RestoreWorkloadComputeInstanceRestorePropertiesLabel"
                    },
                    "description": "Optional. Labels to apply to this instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "machineType": {
                    "type": "string",
                    "description": "Optional. Full or partial URL of the machine type resource to use for this instance.\n",
                    "willReplaceOnChanges": true
                },
                "metadata": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesMetadata:RestoreWorkloadComputeInstanceRestorePropertiesMetadata",
                    "description": "Optional. This includes custom metadata and predefined keys.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "minCpuPlatform": {
                    "type": "string",
                    "description": "Optional. Minimum CPU platform to use for this instance.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "Required. Name of the compute instance.\n",
                    "willReplaceOnChanges": true
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterface:RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterface"
                    },
                    "description": "Optional. An array of network configurations for this instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "networkPerformanceConfig": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkPerformanceConfig:RestoreWorkloadComputeInstanceRestorePropertiesNetworkPerformanceConfig",
                    "description": "Optional. Configure network performance such as egress bandwidth tier.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "params": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesParams:RestoreWorkloadComputeInstanceRestorePropertiesParams",
                    "description": "Input only. Additional params passed with the request.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "privateIpv6GoogleAccess": {
                    "type": "string",
                    "description": "Optional. The private IPv6 google access type for the VM.\nPossible values are: `INSTANCE_PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED`, `INHERIT_FROM_SUBNETWORK`, `ENABLE_OUTBOUND_VM_ACCESS_TO_GOOGLE`, `ENABLE_BIDIRECTIONAL_ACCESS_TO_GOOGLE`.\n",
                    "willReplaceOnChanges": true
                },
                "resourcePolicies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Resource policies applied to this instance.\n",
                    "willReplaceOnChanges": true
                },
                "scheduling": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesScheduling:RestoreWorkloadComputeInstanceRestorePropertiesScheduling",
                    "description": "Optional. Sets the scheduling options for this instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "serviceAccounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesServiceAccount:RestoreWorkloadComputeInstanceRestorePropertiesServiceAccount"
                    },
                    "description": "Optional. A list of service accounts, with their specified scopes, authorized for this instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "shieldedInstanceConfig": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesShieldedInstanceConfig:RestoreWorkloadComputeInstanceRestorePropertiesShieldedInstanceConfig",
                    "description": "Optional. Controls Shielded compute options on the instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesTags:RestoreWorkloadComputeInstanceRestorePropertiesTags",
                    "description": "Optional. Tags to apply to this instance.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesAdvancedMachineFeatures:RestoreWorkloadComputeInstanceRestorePropertiesAdvancedMachineFeatures": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Optional. Whether to enable nested virtualization or not (default is false).\n",
                    "willReplaceOnChanges": true
                },
                "enableUefiNetworking": {
                    "type": "boolean",
                    "description": "Optional. Whether to enable UEFI networking for instance creation.\n",
                    "willReplaceOnChanges": true
                },
                "threadsPerCore": {
                    "type": "integer",
                    "description": "Optional. The number of threads per physical core.\n",
                    "willReplaceOnChanges": true
                },
                "visibleCoreCount": {
                    "type": "integer",
                    "description": "Optional. The number of physical cores to expose to an instance.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesAllocationAffinity:RestoreWorkloadComputeInstanceRestorePropertiesAllocationAffinity": {
            "properties": {
                "consumeAllocationType": {
                    "type": "string",
                    "description": "Possible values are: `TYPE_UNSPECIFIED`, `NO_RESERVATION`, `ANY_RESERVATION`, `SPECIFIC_RESERVATION`.\n",
                    "willReplaceOnChanges": true
                },
                "key": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesConfidentialInstanceConfig:RestoreWorkloadComputeInstanceRestorePropertiesConfidentialInstanceConfig": {
            "properties": {
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Optional. Defines whether the instance should have confidential compute enabled.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDisk:RestoreWorkloadComputeInstanceRestorePropertiesDisk": {
            "properties": {
                "autoDelete": {
                    "type": "boolean",
                    "description": "Optional. Specifies whether the disk will be auto-deleted when the instance is deleted.\n",
                    "willReplaceOnChanges": true
                },
                "boot": {
                    "type": "boolean",
                    "description": "Optional. Indicates that this is a boot disk.\n",
                    "willReplaceOnChanges": true
                },
                "deviceName": {
                    "type": "string",
                    "description": "Optional. This is used as an identifier for the disks.\n",
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKey": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDiskDiskEncryptionKey:RestoreWorkloadComputeInstanceRestorePropertiesDiskDiskEncryptionKey",
                    "description": "Optional. Encrypts or decrypts a disk using a customer-supplied encryption key.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "diskInterface": {
                    "type": "string",
                    "description": "Optional. Specifies the disk interface to use for attaching this disk.\nPossible values are: `DISK_INTERFACE_UNSPECIFIED`, `SCSI`, `NVME`, `NVDIMM`, `ISCSI`.\n",
                    "willReplaceOnChanges": true
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "Optional. The size of the disk in GB.\n",
                    "willReplaceOnChanges": true
                },
                "diskType": {
                    "type": "string",
                    "description": "Output only. The URI of the disk type resource.\n",
                    "willReplaceOnChanges": true
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDiskGuestOsFeature:RestoreWorkloadComputeInstanceRestorePropertiesDiskGuestOsFeature"
                    },
                    "description": "Optional. A list of features to enable on the guest operating system.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "index": {
                    "type": "integer",
                    "description": "Optional. A zero-based index to this disk, where 0 is reserved for the boot disk.\n",
                    "willReplaceOnChanges": true
                },
                "initializeParams": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDiskInitializeParams:RestoreWorkloadComputeInstanceRestorePropertiesDiskInitializeParams",
                    "description": "Optional. Specifies the parameters to initialize this disk.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "kind": {
                    "type": "string",
                    "description": "Optional. Type of the resource.\n",
                    "willReplaceOnChanges": true
                },
                "licenses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Any valid publicly visible licenses.\n",
                    "willReplaceOnChanges": true
                },
                "mode": {
                    "type": "string",
                    "description": "Optional. The mode in which to attach this disk.\nPossible values are: `DISK_MODE_UNSPECIFIED`, `READ_WRITE`, `READ_ONLY`, `LOCKED`.\n",
                    "willReplaceOnChanges": true
                },
                "savedState": {
                    "type": "string",
                    "description": "Optional. Specifies the saved state of the disk.\nPossible values are: `DISK_SAVED_STATE_UNSPECIFIED`, `PRESERVED`.\n",
                    "willReplaceOnChanges": true
                },
                "source": {
                    "type": "string",
                    "description": "Optional. Specifies a valid partial or full URL to an existing Persistent Disk resource.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "Optional. Specifies the type of the disk.\nPossible values are: `DISK_TYPE_UNSPECIFIED`, `SCRATCH`, `PERSISTENT`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDiskDiskEncryptionKey:RestoreWorkloadComputeInstanceRestorePropertiesDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDiskGuestOsFeature:RestoreWorkloadComputeInstanceRestorePropertiesDiskGuestOsFeature": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Possible values are: `FEATURE_TYPE_UNSPECIFIED`, `VIRTIO_SCSI_MULTIQUEUE`, `WINDOWS`, `MULTI_IP_SUBNET`, `UEFI_COMPATIBLE`, `SECURE_BOOT`, `GVNIC`, `SEV_CAPABLE`, `BARE_METAL_LINUX_COMPATIBLE`, `SUSPEND_RESUME_COMPATIBLE`, `SEV_LIVE_MIGRATABLE`, `SEV_SNP_CAPABLE`, `TDX_CAPABLE`, `IDPF`, `SEV_LIVE_MIGRATABLE_V2`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDiskInitializeParams:RestoreWorkloadComputeInstanceRestorePropertiesDiskInitializeParams": {
            "properties": {
                "diskName": {
                    "type": "string",
                    "description": "Optional. Specifies the disk name.\n",
                    "willReplaceOnChanges": true
                },
                "replicaZones": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. URL of the zone where the disk should be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesDisplayDevice:RestoreWorkloadComputeInstanceRestorePropertiesDisplayDevice": {
            "properties": {
                "enableDisplay": {
                    "type": "boolean",
                    "description": "Optional. Enables display for the Compute Engine VM.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesGuestAccelerator:RestoreWorkloadComputeInstanceRestorePropertiesGuestAccelerator": {
            "properties": {
                "acceleratorCount": {
                    "type": "integer",
                    "description": "Optional. The number of the guest accelerator cards exposed to this instance.\n",
                    "willReplaceOnChanges": true
                },
                "acceleratorType": {
                    "type": "string",
                    "description": "Optional. Full or partial URL of the accelerator type resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesInstanceEncryptionKey:RestoreWorkloadComputeInstanceRestorePropertiesInstanceEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesLabel:RestoreWorkloadComputeInstanceRestorePropertiesLabel": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesMetadata:RestoreWorkloadComputeInstanceRestorePropertiesMetadata": {
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesMetadataItem:RestoreWorkloadComputeInstanceRestorePropertiesMetadataItem"
                    },
                    "description": "Structure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesMetadataItem:RestoreWorkloadComputeInstanceRestorePropertiesMetadataItem": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterface:RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterface": {
            "properties": {
                "accessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceAccessConfig:RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceAccessConfig"
                    },
                    "description": "Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "aliasIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceAliasIpRange:RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceAliasIpRange"
                    },
                    "description": "Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "internalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "Optional. The prefix length of the primary internal IPv6 range.\n",
                    "willReplaceOnChanges": true
                },
                "ipAddress": {
                    "type": "string",
                    "description": "Optional. An IPv4 internal IP address to assign to the instance.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6AccessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceIpv6AccessConfig:RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceIpv6AccessConfig"
                    },
                    "description": "Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "Possible values are: `UNSPECIFIED_IPV6_ACCESS_TYPE`, `INTERNAL`, `EXTERNAL`.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "Optional. An IPv6 internal network address for this network interface.\n",
                    "willReplaceOnChanges": true
                },
                "network": {
                    "type": "string",
                    "description": "Optional. URL of the VPC network resource for this instance.\n",
                    "willReplaceOnChanges": true
                },
                "networkAttachment": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "nicType": {
                    "type": "string",
                    "description": "Possible values are: `NIC_TYPE_UNSPECIFIED`, `VIRTIO_NET`, `GVNIC`.\n",
                    "willReplaceOnChanges": true
                },
                "queueCount": {
                    "type": "integer",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "stackType": {
                    "type": "string",
                    "description": "Possible values are: `STACK_TYPE_UNSPECIFIED`, `IPV4_ONLY`, `IPV4_IPV6`.\n",
                    "willReplaceOnChanges": true
                },
                "subnetwork": {
                    "type": "string",
                    "description": "Optional. The URL of the Subnetwork resource for this instance.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceAccessConfig:RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceAccessConfig": {
            "properties": {
                "externalIp": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "Optional. The name of this access configuration.\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "Possible values are: `NETWORK_TIER_UNSPECIFIED`, `PREMIUM`, `STANDARD`.\n",
                    "willReplaceOnChanges": true
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "setPublicPtr": {
                    "type": "boolean",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "Optional. The type of configuration.\nPossible values are: `ACCESS_TYPE_UNSPECIFIED`, `ONE_TO_ONE_NAT`, `DIRECT_IPV6`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceAliasIpRange:RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceAliasIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceIpv6AccessConfig:RestoreWorkloadComputeInstanceRestorePropertiesNetworkInterfaceIpv6AccessConfig": {
            "properties": {
                "externalIp": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "(Optional, Deprecated)\nThe resource name of the backup instance.\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e is deprecated and will be removed in a future major release. The backup is identified by the parameters (location, backup_vault_id, data_source_id, backup_id).\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "Possible values: [\"NETWORK_TIER_UNSPECIFIED\", \"PREMIUM\", \"STANDARD\"]\n",
                    "willReplaceOnChanges": true
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "setPublicPtr": {
                    "type": "boolean",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "Output only. Type of the resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesNetworkPerformanceConfig:RestoreWorkloadComputeInstanceRestorePropertiesNetworkPerformanceConfig": {
            "properties": {
                "totalEgressBandwidthTier": {
                    "type": "string",
                    "description": "Possible values are: `TIER_UNSPECIFIED`, `DEFAULT`, `TIER_1`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesParams:RestoreWorkloadComputeInstanceRestorePropertiesParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesParamsResourceManagerTag:RestoreWorkloadComputeInstanceRestorePropertiesParamsResourceManagerTag"
                    },
                    "description": "Structure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesParamsResourceManagerTag:RestoreWorkloadComputeInstanceRestorePropertiesParamsResourceManagerTag": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesScheduling:RestoreWorkloadComputeInstanceRestorePropertiesScheduling": {
            "properties": {
                "automaticRestart": {
                    "type": "boolean",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "instanceTerminationAction": {
                    "type": "string",
                    "description": "Possible values are: `INSTANCE_TERMINATION_ACTION_UNSPECIFIED`, `DELETE`, `STOP`.\n",
                    "willReplaceOnChanges": true
                },
                "localSsdRecoveryTimeout": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesSchedulingLocalSsdRecoveryTimeout:RestoreWorkloadComputeInstanceRestorePropertiesSchedulingLocalSsdRecoveryTimeout",
                    "description": "A nested object resource.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "maxRunDuration": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesSchedulingMaxRunDuration:RestoreWorkloadComputeInstanceRestorePropertiesSchedulingMaxRunDuration",
                    "description": "A nested object resource.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "minNodeCpus": {
                    "type": "integer",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "nodeAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesSchedulingNodeAffinity:RestoreWorkloadComputeInstanceRestorePropertiesSchedulingNodeAffinity"
                    },
                    "description": "Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "onHostMaintenance": {
                    "type": "string",
                    "description": "Possible values are: `ON_HOST_MAINTENANCE_UNSPECIFIED`, `TERMINATE`, `MIGRATE`.\n",
                    "willReplaceOnChanges": true
                },
                "preemptible": {
                    "type": "boolean",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "provisioningModel": {
                    "type": "string",
                    "description": "Possible values are: `PROVISIONING_MODEL_UNSPECIFIED`, `STANDARD`, `SPOT`.\n",
                    "willReplaceOnChanges": true
                },
                "terminationTime": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesSchedulingLocalSsdRecoveryTimeout:RestoreWorkloadComputeInstanceRestorePropertiesSchedulingLocalSsdRecoveryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesSchedulingMaxRunDuration:RestoreWorkloadComputeInstanceRestorePropertiesSchedulingMaxRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesSchedulingNodeAffinity:RestoreWorkloadComputeInstanceRestorePropertiesSchedulingNodeAffinity": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "operator": {
                    "type": "string",
                    "description": "Possible values are: `OPERATOR_UNSPECIFIED`, `IN`, `NOT_IN`.\n",
                    "willReplaceOnChanges": true
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesServiceAccount:RestoreWorkloadComputeInstanceRestorePropertiesServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesShieldedInstanceConfig:RestoreWorkloadComputeInstanceRestorePropertiesShieldedInstanceConfig": {
            "properties": {
                "enableIntegrityMonitoring": {
                    "type": "boolean",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "enableVtpm": {
                    "type": "boolean",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceRestorePropertiesTags:RestoreWorkloadComputeInstanceRestorePropertiesTags": {
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadComputeInstanceTargetEnvironment:RestoreWorkloadComputeInstanceTargetEnvironment": {
            "properties": {
                "project": {
                    "type": "string",
                    "description": "Required. Target project for the Compute Engine instance.\n",
                    "willReplaceOnChanges": true
                },
                "useProjectServiceAccount": {
                    "type": "boolean",
                    "description": "If true, use the BackupDR P4SA credentials for same-project restores. Default is false.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "Required. The zone of the Compute Engine instance.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "project",
                "zone"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadDiskRestoreProperties:RestoreWorkloadDiskRestoreProperties": {
            "properties": {
                "accessMode": {
                    "type": "string",
                    "description": "Optional. The access mode of the disk.\nPossible values are: `READ_WRITE_SINGLE`, `READ_WRITE_MANY`, `READ_ONLY_MANY`.\n",
                    "willReplaceOnChanges": true
                },
                "architecture": {
                    "type": "string",
                    "description": "Optional. The architecture of the source disk.\nPossible values are: `ARCHITECTURE_UNSPECIFIED`, `X86_64`, `ARM64`.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "Optional. An optional description of this resource.\n",
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKey": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadDiskRestorePropertiesDiskEncryptionKey:RestoreWorkloadDiskRestorePropertiesDiskEncryptionKey",
                    "description": "Optional. Encrypts the disk using a customer-supplied encryption key.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Optional. Indicates whether this disk is using confidential compute mode.\n",
                    "willReplaceOnChanges": true
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadDiskRestorePropertiesGuestOsFeature:RestoreWorkloadDiskRestorePropertiesGuestOsFeature"
                    },
                    "description": "Optional. A list of features to enable in the guest operating system.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadDiskRestorePropertiesLabel:RestoreWorkloadDiskRestorePropertiesLabel"
                    },
                    "description": "Optional. Labels to apply to this disk.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "licenses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A list of publicly available licenses that are applicable to this backup.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "Required. Name of the disk.\n",
                    "willReplaceOnChanges": true
                },
                "physicalBlockSizeBytes": {
                    "type": "integer",
                    "description": "Optional. Physical block size of the persistent disk, in bytes.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Optional. Indicates how many IOPS to provision for the disk.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Optional. Indicates how much throughput to provision for the disk.\n",
                    "willReplaceOnChanges": true
                },
                "resourceManagerTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadDiskRestorePropertiesResourceManagerTag:RestoreWorkloadDiskRestorePropertiesResourceManagerTag"
                    },
                    "description": "Optional. Resource manager tags to be bound to the disk.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "resourcePolicies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Resource policies applied to this disk.\n",
                    "willReplaceOnChanges": true
                },
                "sizeGb": {
                    "type": "integer",
                    "description": "Required. The size of the disk in GB.\n",
                    "willReplaceOnChanges": true
                },
                "storagePool": {
                    "type": "string",
                    "description": "Optional. The storage pool in which the new disk is created.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "Required. URL of the disk type resource describing which disk type to use.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "name",
                "sizeGb",
                "type"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadDiskRestorePropertiesDiskEncryptionKey:RestoreWorkloadDiskRestorePropertiesDiskEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadDiskRestorePropertiesGuestOsFeature:RestoreWorkloadDiskRestorePropertiesGuestOsFeature": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Possible values are: `FEATURE_TYPE_UNSPECIFIED`, `VIRTIO_SCSI_MULTIQUEUE`, `WINDOWS`, `MULTI_IP_SUBNET`, `UEFI_COMPATIBLE`, `SECURE_BOOT`, `GVNIC`, `SEV_CAPABLE`, `BARE_METAL_LINUX_COMPATIBLE`, `SUSPEND_RESUME_COMPATIBLE`, `SEV_LIVE_MIGRATABLE`, `SEV_SNP_CAPABLE`, `TDX_CAPABLE`, `IDPF`, `SEV_LIVE_MIGRATABLE_V2`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadDiskRestorePropertiesLabel:RestoreWorkloadDiskRestorePropertiesLabel": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadDiskRestorePropertiesResourceManagerTag:RestoreWorkloadDiskRestorePropertiesResourceManagerTag": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "(Optional)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadDiskTargetEnvironment:RestoreWorkloadDiskTargetEnvironment": {
            "properties": {
                "project": {
                    "type": "string",
                    "description": "Required. Target project for the disk.\n",
                    "willReplaceOnChanges": true
                },
                "useProjectServiceAccount": {
                    "type": "boolean",
                    "description": "If true, use the BackupDR P4SA credentials for same-project restores. Default is false.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "Required. Target zone for the disk.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "project",
                "zone"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadRegionDiskTargetEnvironment:RestoreWorkloadRegionDiskTargetEnvironment": {
            "properties": {
                "project": {
                    "type": "string",
                    "description": "Required. Target project for the disk.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "Required. Target region for the disk.\n",
                    "willReplaceOnChanges": true
                },
                "replicaZones": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. Target URLs of the replica zones for the disk.\n",
                    "willReplaceOnChanges": true
                },
                "useProjectServiceAccount": {
                    "type": "boolean",
                    "description": "If true, use the BackupDR P4SA credentials for same-project restores. Default is false.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "project",
                "region",
                "replicaZones"
            ]
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadTargetResource:RestoreWorkloadTargetResource": {
            "properties": {
                "gcpResource": {
                    "$ref": "#/types/gcp:backupdisasterrecovery/RestoreWorkloadTargetResourceGcpResource:RestoreWorkloadTargetResourceGcpResource",
                    "description": "Output only. Details of the native Google Cloud resource created as part of restore.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/RestoreWorkloadTargetResourceGcpResource:RestoreWorkloadTargetResourceGcpResource": {
            "properties": {
                "gcpResourcename": {
                    "type": "string",
                    "description": "Output only. Name of the Google Cloud resource.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Required. The location for the backup vault.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Output only. Type of the resource.\n"
                }
            },
            "type": "object"
        },
        "gcp:backupdisasterrecovery/getBackupBackup:getBackupBackup": {
            "properties": {
                "backupId": {
                    "type": "string",
                    "description": "Id of the requesting object, Backup.\n"
                },
                "backupVaultId": {
                    "type": "string",
                    "description": "The ID of the Backup Vault of the Data Source in which the Backup belongs.\n"
                },
                "computeInstanceBackupProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getBackupBackupComputeInstanceBackupProperty:getBackupBackupComputeInstanceBackupProperty"
                    },
                    "description": "Compute instance related properties of the backup.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "The time when the backup was created.\n"
                },
                "dataSourceId": {
                    "type": "string",
                    "description": "The ID of the Data Source in which the Backup belongs.\n"
                },
                "diskBackupProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getBackupBackupDiskBackupProperty:getBackupBackupDiskBackupProperty"
                    },
                    "description": "Disk related properties of the backup.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location in which the Backup belongs.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the resource.\n"
                }
            },
            "type": "object",
            "required": [
                "backupId",
                "backupVaultId",
                "computeInstanceBackupProperties",
                "createTime",
                "dataSourceId",
                "diskBackupProperties",
                "location",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupBackupComputeInstanceBackupProperty:getBackupBackupComputeInstanceBackupProperty": {
            "properties": {
                "guestFlush": {
                    "type": "boolean",
                    "description": "Indicates if the backup was created with guest flush enabled.\n"
                }
            },
            "type": "object",
            "required": [
                "guestFlush"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupBackupDiskBackupProperty:getBackupBackupDiskBackupProperty": {
            "properties": {
                "guestFlush": {
                    "type": "boolean",
                    "description": "Indicates whether the backup is application-consistent.\n"
                }
            },
            "type": "object",
            "required": [
                "guestFlush"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanAssociationRulesConfigInfo:getBackupPlanAssociationRulesConfigInfo": {
            "properties": {
                "lastBackupErrors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getBackupPlanAssociationRulesConfigInfoLastBackupError:getBackupPlanAssociationRulesConfigInfoLastBackupError"
                    },
                    "description": "google.rpc.Status object to store the last backup error\n"
                },
                "lastBackupState": {
                    "type": "string",
                    "description": "State of last backup taken.\n"
                },
                "lastSuccessfulBackupConsistencyTime": {
                    "type": "string",
                    "description": "The point in time when the last successful backup was captured from the source\n"
                },
                "ruleId": {
                    "type": "string",
                    "description": "Backup Rule id fetched from backup plan.\n"
                }
            },
            "type": "object",
            "required": [
                "lastBackupErrors",
                "lastBackupState",
                "lastSuccessfulBackupConsistencyTime",
                "ruleId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanAssociationRulesConfigInfoLastBackupError:getBackupPlanAssociationRulesConfigInfoLastBackupError": {
            "properties": {
                "code": {
                    "type": "number",
                    "description": "The status code, which should be an enum value of [google.rpc.Code]\n"
                },
                "message": {
                    "type": "string",
                    "description": "A developer-facing error message, which should be in English.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "message"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanAssociationsAssociation:getBackupPlanAssociationsAssociation": {
            "properties": {
                "backupPlan": {
                    "type": "string",
                    "description": "The backup plan to which the resource is attached.\n"
                },
                "createTime": {
                    "type": "string"
                },
                "dataSource": {
                    "type": "string",
                    "description": "The resource name of data source which will be used as storage location for backups taken.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The full name of the backup plan association resource.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "The resource to which the backup plan is applied.\n"
                },
                "rulesConfigInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getBackupPlanAssociationsAssociationRulesConfigInfo:getBackupPlanAssociationsAssociationRulesConfigInfo"
                    },
                    "description": "A list containing information about the backup rules. Each object in the list contains:\n"
                }
            },
            "type": "object",
            "required": [
                "backupPlan",
                "createTime",
                "dataSource",
                "name",
                "resource",
                "rulesConfigInfos"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanAssociationsAssociationRulesConfigInfo:getBackupPlanAssociationsAssociationRulesConfigInfo": {
            "properties": {
                "lastBackupErrors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getBackupPlanAssociationsAssociationRulesConfigInfoLastBackupError:getBackupPlanAssociationsAssociationRulesConfigInfoLastBackupError"
                    },
                    "description": "A block containing details of the last backup error, if any.\n"
                },
                "lastBackupState": {
                    "type": "string",
                    "description": "State of last backup taken.\n"
                },
                "lastSuccessfulBackupConsistencyTime": {
                    "type": "string",
                    "description": "The point in time when the last successful backup was captured from the source.\n"
                },
                "ruleId": {
                    "type": "string",
                    "description": "Backup Rule id fetched from backup plan.\n"
                }
            },
            "type": "object",
            "required": [
                "lastBackupErrors",
                "lastBackupState",
                "lastSuccessfulBackupConsistencyTime",
                "ruleId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanAssociationsAssociationRulesConfigInfoLastBackupError:getBackupPlanAssociationsAssociationRulesConfigInfoLastBackupError": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The status code, which should be an enum value of [google.rpc.Code].\n"
                },
                "message": {
                    "type": "string",
                    "description": "A developer-facing error message.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "message"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanBackupRule:getBackupPlanBackupRule": {
            "properties": {
                "backupRetentionDays": {
                    "type": "integer",
                    "description": "Configures the duration for which backup data will be kept. The value should be greater than or equal to minimum enforced retention of the backup vault.\n"
                },
                "ruleId": {
                    "type": "string",
                    "description": "The unique ID of this 'BackupRule'. The 'rule_id' is unique per 'BackupPlan'.\n"
                },
                "standardSchedules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getBackupPlanBackupRuleStandardSchedule:getBackupPlanBackupRuleStandardSchedule"
                    },
                    "description": "StandardSchedule defines a schedule that runs within the confines of a defined window of days.\n"
                }
            },
            "type": "object",
            "required": [
                "backupRetentionDays",
                "ruleId",
                "standardSchedules"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanBackupRuleStandardSchedule:getBackupPlanBackupRuleStandardSchedule": {
            "properties": {
                "backupWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getBackupPlanBackupRuleStandardScheduleBackupWindow:getBackupPlanBackupRuleStandardScheduleBackupWindow"
                    },
                    "description": "A BackupWindow defines the window of the day during which backup jobs will run. Jobs are queued at the beginning of the window and will be marked as\n'NOT_RUN' if they do not start by the end of the window.\n"
                },
                "daysOfMonths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Specifies days of months like 1, 5, or 14 on which jobs will run.\n"
                },
                "daysOfWeeks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies days of week like MONDAY or TUESDAY, on which jobs will run. This is required for 'recurrence_type', 'WEEKLY' and is not applicable otherwise. Possible values: [\"DAY_OF_WEEK_UNSPECIFIED\", \"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\", \"SUNDAY\"]\n"
                },
                "hourlyFrequency": {
                    "type": "integer",
                    "description": "Specifies frequency for hourly backups. An hourly frequency of 2 means jobs will run every 2 hours from start time till end time defined.\nThis is required for 'recurrence_type', 'HOURLY' and is not applicable otherwise.\n"
                },
                "months": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies values of months Possible values: [\"MONTH_UNSPECIFIED\", \"JANUARY\", \"FEBRUARY\", \"MARCH\", \"APRIL\", \"MAY\", \"JUNE\", \"JULY\", \"AUGUST\", \"SEPTEMBER\", \"OCTOBER\", \"NOVEMBER\", \"DECEMBER\"]\n"
                },
                "recurrenceType": {
                    "type": "string",
                    "description": "RecurrenceType enumerates the applicable periodicity for the schedule. Possible values: [\"HOURLY\", \"DAILY\", \"WEEKLY\", \"MONTHLY\", \"YEARLY\"]\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "The time zone to be used when interpreting the schedule.\n"
                },
                "weekDayOfMonths": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getBackupPlanBackupRuleStandardScheduleWeekDayOfMonth:getBackupPlanBackupRuleStandardScheduleWeekDayOfMonth"
                    },
                    "description": "Specifies a week day of the month like FIRST SUNDAY or LAST MONDAY, on which jobs will run.\n"
                }
            },
            "type": "object",
            "required": [
                "backupWindows",
                "daysOfMonths",
                "daysOfWeeks",
                "hourlyFrequency",
                "months",
                "recurrenceType",
                "timeZone",
                "weekDayOfMonths"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanBackupRuleStandardScheduleBackupWindow:getBackupPlanBackupRuleStandardScheduleBackupWindow": {
            "properties": {
                "endHourOfDay": {
                    "type": "integer",
                    "description": "The hour of the day (1-24) when the window ends, for example, if the value of end hour of the day is 10, that means the backup window end time is 10:00.\nThe end hour of the day should be greater than the start\n"
                },
                "startHourOfDay": {
                    "type": "integer",
                    "description": "The hour of the day (0-23) when the window starts, for example, if the value of the start hour of the day is 6, that means the backup window starts at 6:00.\n"
                }
            },
            "type": "object",
            "required": [
                "endHourOfDay",
                "startHourOfDay"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanBackupRuleStandardScheduleWeekDayOfMonth:getBackupPlanBackupRuleStandardScheduleWeekDayOfMonth": {
            "properties": {
                "dayOfWeek": {
                    "type": "string",
                    "description": "Specifies the day of the week. Possible values: [\"DAY_OF_WEEK_UNSPECIFIED\", \"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\", \"SUNDAY\"]\n"
                },
                "weekOfMonth": {
                    "type": "string",
                    "description": "WeekOfMonth enumerates possible weeks in the month, e.g. the first, third, or last week of the month. Possible values: [\"WEEK_OF_MONTH_UNSPECIFIED\", \"FIRST\", \"SECOND\", \"THIRD\", \"FOURTH\", \"LAST\"]\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfWeek",
                "weekOfMonth"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanComputeInstanceBackupPlanProperty:getBackupPlanComputeInstanceBackupPlanProperty": {
            "properties": {
                "guestFlush": {
                    "type": "boolean",
                    "description": "Indicates whether to perform a guest flush operation before taking a\ncompute instance backup. When set to true, the system will attempt\nto ensure application-consistent backups.\n"
                }
            },
            "type": "object",
            "required": [
                "guestFlush"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupPlanDiskBackupPlanProperty:getBackupPlanDiskBackupPlanProperty": {
            "properties": {
                "guestFlush": {
                    "type": "boolean",
                    "description": "Indicates whether to perform a guest flush operation before taking a disk\nbackup. When set to true, the system will attempt to ensure\napplication-consistent backups. When set to false, the system will\ncreate crash-consistent backups.\n"
                }
            },
            "type": "object",
            "required": [
                "guestFlush"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getBackupVaultEncryptionConfig:getBackupVaultEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The Resource name of the Cloud KMS key to be used to encrypt new backups. The key must be in the same location as the backup vault. The key must be a Cloud KMS CryptoKey.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourceBackupConfigInfo:getDataSourceBackupConfigInfo": {
            "properties": {
                "backupApplianceBackupConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourceBackupConfigInfoBackupApplianceBackupConfig:getDataSourceBackupConfigInfoBackupApplianceBackupConfig"
                    },
                    "description": "Configuration for an application backed up by a Backup Appliance.\n"
                },
                "gcpBackupConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourceBackupConfigInfoGcpBackupConfig:getDataSourceBackupConfigInfoGcpBackupConfig"
                    },
                    "description": "Configuration for a Google Cloud resource.\n"
                },
                "lastBackupError": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "If the last backup failed, this field has the error message.\n"
                },
                "lastBackupState": {
                    "type": "string",
                    "description": "LastBackupstate tracks whether the last backup was not yet started, successful, failed, or could not be run because of the lack of permissions.\n"
                },
                "lastSuccessfulBackupConsistencyTime": {
                    "type": "string",
                    "description": "If the last backup were successful, this field has the consistency date.\n"
                }
            },
            "type": "object",
            "required": [
                "backupApplianceBackupConfigs",
                "gcpBackupConfigs",
                "lastBackupError",
                "lastBackupState",
                "lastSuccessfulBackupConsistencyTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourceBackupConfigInfoBackupApplianceBackupConfig:getDataSourceBackupConfigInfoBackupApplianceBackupConfig": {
            "properties": {
                "applicationName": {
                    "type": "string",
                    "description": "The name of the application.\n"
                },
                "backupApplianceId": {
                    "type": "string",
                    "description": "The ID of the backup appliance.\n"
                },
                "backupApplianceName": {
                    "type": "string",
                    "description": "The name of the backup appliance.\n"
                },
                "hostName": {
                    "type": "string",
                    "description": "The name of the host where the application is running.\n"
                },
                "slaId": {
                    "type": "string",
                    "description": "The ID of the SLA of this application.\n"
                },
                "slpName": {
                    "type": "string",
                    "description": "The name of the SLP associated with the application.\n"
                },
                "sltName": {
                    "type": "string",
                    "description": "The name of the SLT associated with the application.\n"
                }
            },
            "type": "object",
            "required": [
                "applicationName",
                "backupApplianceId",
                "backupApplianceName",
                "hostName",
                "slaId",
                "slpName",
                "sltName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourceBackupConfigInfoGcpBackupConfig:getDataSourceBackupConfigInfoGcpBackupConfig": {
            "properties": {
                "backupPlan": {
                    "type": "string",
                    "description": "The name of the backup plan.\n"
                },
                "backupPlanAssociation": {
                    "type": "string",
                    "description": "The name of the backup plan association.\n"
                },
                "backupPlanDescription": {
                    "type": "string",
                    "description": "The description of the backup plan.\n"
                },
                "backupPlanRules": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The names of the backup plan rules which point to this backupvault\n"
                }
            },
            "type": "object",
            "required": [
                "backupPlan",
                "backupPlanAssociation",
                "backupPlanDescription",
                "backupPlanRules"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourceDataSourceBackupApplianceApplication:getDataSourceDataSourceBackupApplianceApplication": {
            "properties": {
                "applianceId": {
                    "type": "string",
                    "description": "Appliance Id of the Backup Appliance.\n"
                },
                "applicationId": {
                    "type": "string",
                    "description": "The appid field of the application within the Backup Appliance.\n"
                },
                "applicationName": {
                    "type": "string",
                    "description": "The name of the Application as known to the Backup Appliance.\n"
                },
                "backupAppliance": {
                    "type": "string",
                    "description": "Appliance name.\n"
                },
                "hostId": {
                    "type": "string",
                    "description": "Hostid of the application host.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the host where the application is running.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the application. e.g. VMBackup\n"
                }
            },
            "type": "object",
            "required": [
                "applianceId",
                "applicationId",
                "applicationName",
                "backupAppliance",
                "hostId",
                "hostname",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourceDataSourceGcpResource:getDataSourceDataSourceGcpResource": {
            "properties": {
                "computeInstanceDataSourceProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty:getDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty"
                    },
                    "description": "ComputeInstanceDataSourceProperties has a subset of Compute Instance properties that are useful at the Datasource level.\n"
                },
                "gcpResourcename": {
                    "type": "string",
                    "description": "Full resource pathname URL of the source Google Cloud resource.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location in which the Data Source belongs.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the Google Cloud resource. Use the Unified Resource Type,\n\t\t\t\t\teg. compute.googleapis.com/Instance.\n"
                }
            },
            "type": "object",
            "required": [
                "computeInstanceDataSourceProperties",
                "gcpResourcename",
                "location",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty:getDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the Compute Engine instance.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "The machine type of the instance.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the compute instance backed up by the datasource.\n"
                },
                "totalDiskCount": {
                    "type": "string",
                    "description": "The total number of disks attached to the Instance.\n"
                },
                "totalDiskSizeGb": {
                    "type": "string",
                    "description": "The sum of all the disk sizes.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "machineType",
                "name",
                "totalDiskCount",
                "totalDiskSizeGb"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourceReferencesDataSourceReference:getDataSourceReferencesDataSourceReference": {
            "properties": {
                "backupConfigState": {
                    "type": "string",
                    "description": "The state of the backup config for the data source.\n"
                },
                "backupCount": {
                    "type": "integer",
                    "description": "The number of backups for the data source.\n"
                },
                "dataSource": {
                    "type": "string",
                    "description": "The underlying data source resource.\n"
                },
                "gcpResourceName": {
                    "type": "string",
                    "description": "The GCP resource name for the data source.\n"
                },
                "lastBackupState": {
                    "type": "string",
                    "description": "The state of the last backup.\n"
                },
                "lastSuccessfulBackupTime": {
                    "type": "string",
                    "description": "The last time a successful backup was made.\n"
                },
                "name": {
                    "type": "string"
                },
                "resourceType": {
                    "type": "string",
                    "description": "The resource type to get the data source references for. Examples include, \"sqladmin.googleapis.com/Instance\" , \"compute.googleapis.com/Instance\". \u003cspan pulumi-lang-nodejs=\"`resourceType`\" pulumi-lang-dotnet=\"`ResourceType`\" pulumi-lang-go=\"`resourceType`\" pulumi-lang-python=\"`resource_type`\" pulumi-lang-yaml=\"`resourceType`\" pulumi-lang-java=\"`resourceType`\" pulumi-lang-hcl=\"`resource_type`\"\u003e`resourceType`\u003c/span\u003e is deprecated and will be removed in a future major release.\n"
                }
            },
            "type": "object",
            "required": [
                "backupConfigState",
                "backupCount",
                "dataSource",
                "gcpResourceName",
                "lastBackupState",
                "lastSuccessfulBackupTime",
                "name",
                "resourceType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourcesDataSource:getDataSourcesDataSource": {
            "properties": {
                "backupConfigInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourcesDataSourceBackupConfigInfo:getDataSourcesDataSourceBackupConfigInfo"
                    },
                    "description": "An object containing information about the backup configuration.\n"
                },
                "backupCount": {
                    "type": "string",
                    "description": "Number of backups in the data source.\n"
                },
                "configState": {
                    "type": "string",
                    "description": "The configuration state of the DataSource.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "Timestamp of when the DataSource was created.\n"
                },
                "dataSourceBackupApplianceApplications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourcesDataSourceDataSourceBackupApplianceApplication:getDataSourcesDataSourceDataSourceBackupApplianceApplication"
                    },
                    "description": "The backed up resource is a backup appliance application.\n"
                },
                "dataSourceGcpResources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourcesDataSourceDataSourceGcpResource:getDataSourcesDataSourceDataSourceGcpResource"
                    },
                    "description": "An object containing details about the underlying GCP resource being backed up.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "Server specified ETag for the ManagementServer resource to prevent simultaneous updates from overwiting each other.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource labels to represent user provided metadata.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The full resource name of the DataSource, in the format projects/{project}/locations/{location}/backupVaults/{backupVaultId}/dataSources/{dataSourceId}.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The current state of the DataSource (e.g., ACTIVE, CREATING, DELETING).\n"
                },
                "totalStoredBytes": {
                    "type": "string",
                    "description": "The number of bytes (metadata and data) stored in this datasource.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "Timestamp of when the DataSource was last updated.\n"
                }
            },
            "type": "object",
            "required": [
                "backupConfigInfos",
                "backupCount",
                "configState",
                "createTime",
                "dataSourceBackupApplianceApplications",
                "dataSourceGcpResources",
                "etag",
                "labels",
                "name",
                "state",
                "totalStoredBytes",
                "updateTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourcesDataSourceBackupConfigInfo:getDataSourcesDataSourceBackupConfigInfo": {
            "properties": {
                "backupApplianceBackupConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourcesDataSourceBackupConfigInfoBackupApplianceBackupConfig:getDataSourcesDataSourceBackupConfigInfoBackupApplianceBackupConfig"
                    },
                    "description": "Configuration for an application backed up by a Backup Appliance.\n"
                },
                "gcpBackupConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourcesDataSourceBackupConfigInfoGcpBackupConfig:getDataSourcesDataSourceBackupConfigInfoGcpBackupConfig"
                    },
                    "description": "Configuration for a Google Cloud resource.\n"
                },
                "lastBackupError": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "If the last backup failed, this field has the error message.\n"
                },
                "lastBackupState": {
                    "type": "string",
                    "description": "The state of the last backup attempt.\n"
                },
                "lastSuccessfulBackupConsistencyTime": {
                    "type": "string",
                    "description": "The consistency time of the last successful backup.\n"
                }
            },
            "type": "object",
            "required": [
                "backupApplianceBackupConfigs",
                "gcpBackupConfigs",
                "lastBackupError",
                "lastBackupState",
                "lastSuccessfulBackupConsistencyTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourcesDataSourceBackupConfigInfoBackupApplianceBackupConfig:getDataSourcesDataSourceBackupConfigInfoBackupApplianceBackupConfig": {
            "properties": {
                "applicationName": {
                    "type": "string",
                    "description": "The name of the application.\n"
                },
                "backupApplianceId": {
                    "type": "string",
                    "description": "The ID of the backup appliance.\n"
                },
                "backupApplianceName": {
                    "type": "string",
                    "description": "The name of the backup appliance.\n"
                },
                "hostName": {
                    "type": "string",
                    "description": "The name of the host where the application is running.\n"
                },
                "slaId": {
                    "type": "string",
                    "description": "The ID of the SLA of this application.\n"
                },
                "slpName": {
                    "type": "string",
                    "description": "The name of the SLP associated with the application.\n"
                },
                "sltName": {
                    "type": "string",
                    "description": "The name of the SLT associated with the application.\n"
                }
            },
            "type": "object",
            "required": [
                "applicationName",
                "backupApplianceId",
                "backupApplianceName",
                "hostName",
                "slaId",
                "slpName",
                "sltName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourcesDataSourceBackupConfigInfoGcpBackupConfig:getDataSourcesDataSourceBackupConfigInfoGcpBackupConfig": {
            "properties": {
                "backupPlan": {
                    "type": "string",
                    "description": "The name of the backup plan.\n"
                },
                "backupPlanAssociation": {
                    "type": "string",
                    "description": "The name of the backup plan association.\n"
                },
                "backupPlanDescription": {
                    "type": "string",
                    "description": "The description of the backup plan.\n"
                },
                "backupPlanRules": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The names of the backup plan rules which point to this backupvault\n"
                }
            },
            "type": "object",
            "required": [
                "backupPlan",
                "backupPlanAssociation",
                "backupPlanDescription",
                "backupPlanRules"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourcesDataSourceDataSourceBackupApplianceApplication:getDataSourcesDataSourceDataSourceBackupApplianceApplication": {
            "properties": {
                "applianceId": {
                    "type": "string",
                    "description": "Appliance Id of the Backup Appliance.\n"
                },
                "applicationId": {
                    "type": "string",
                    "description": "The appid field of the application within the Backup Appliance.\n"
                },
                "applicationName": {
                    "type": "string",
                    "description": "The name of the Application as known to the Backup Appliance.\n"
                },
                "backupAppliance": {
                    "type": "string",
                    "description": "Appliance name.\n"
                },
                "hostId": {
                    "type": "string",
                    "description": "Hostid of the application host.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the host where the application is running.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the GCP resource.\n"
                }
            },
            "type": "object",
            "required": [
                "applianceId",
                "applicationId",
                "applicationName",
                "backupAppliance",
                "hostId",
                "hostname",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourcesDataSourceDataSourceGcpResource:getDataSourcesDataSourceDataSourceGcpResource": {
            "properties": {
                "computeInstanceDataSourceProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:backupdisasterrecovery/getDataSourcesDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty:getDataSourcesDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty"
                    },
                    "description": "ComputeInstanceDataSourceProperties has a subset of Compute Instance properties that are useful at the Datasource level.\n"
                },
                "gcpResourcename": {
                    "type": "string",
                    "description": "The full name of the GCP resource.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The location in which the Data Source belongs.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the GCP resource.\n"
                }
            },
            "type": "object",
            "required": [
                "computeInstanceDataSourceProperties",
                "gcpResourcename",
                "location",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getDataSourcesDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty:getDataSourcesDataSourceDataSourceGcpResourceComputeInstanceDataSourceProperty": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the Compute Engine instance.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "The machine type of the instance.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The full resource name of the DataSource, in the format projects/{project}/locations/{location}/backupVaults/{backupVaultId}/dataSources/{dataSourceId}.\n"
                },
                "totalDiskCount": {
                    "type": "string",
                    "description": "The total number of disks attached to the Instance.\n"
                },
                "totalDiskSizeGb": {
                    "type": "string",
                    "description": "The sum of all the disk sizes.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "machineType",
                "name",
                "totalDiskCount",
                "totalDiskSizeGb"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getManagementServerManagementUri:getManagementServerManagementUri": {
            "properties": {
                "api": {
                    "type": "string",
                    "description": "The management console api endpoint.\n"
                },
                "webUi": {
                    "type": "string",
                    "description": "The management console webUi.\n"
                }
            },
            "type": "object",
            "required": [
                "api",
                "webUi"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:backupdisasterrecovery/getManagementServerNetwork:getManagementServerNetwork": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "Network with format 'projects/{{project_id}}/global/networks/{{network_id}}'\n"
                },
                "peeringMode": {
                    "type": "string",
                    "description": "Type of Network peeringMode Default value: \"PRIVATE_SERVICE_ACCESS\" Possible values: [\"PRIVATE_SERVICE_ACCESS\"]\n"
                }
            },
            "type": "object",
            "required": [
                "network",
                "peeringMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/AppConnectionApplicationEndpoint:AppConnectionApplicationEndpoint": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "Hostname or IP address of the remote application endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port of the remote application endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "host",
                "port"
            ]
        },
        "gcp:beyondcorp/AppConnectionGateway:AppConnectionGateway": {
            "properties": {
                "appGateway": {
                    "type": "string",
                    "description": "AppGateway name in following format: projects/{project_id}/locations/{locationId}/appgateways/{gateway_id}.\n"
                },
                "ingressPort": {
                    "type": "integer",
                    "description": "(Output)\nIngress port reserved on the gateways for this AppConnection, if not specified or zero, the default port is 19443.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of hosting used by the gateway. Refer to\nhttps://cloud.google.com/beyondcorp/docs/reference/rest/v1/projects.locations.appConnections#Type_1\nfor a list of possible values.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "(Output)\nServer-defined URI for this resource.\n"
                }
            },
            "type": "object",
            "required": [
                "appGateway"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "appGateway",
                        "ingressPort",
                        "uri"
                    ]
                }
            }
        },
        "gcp:beyondcorp/AppConnectorPrincipalInfo:AppConnectorPrincipalInfo": {
            "properties": {
                "serviceAccount": {
                    "$ref": "#/types/gcp:beyondcorp/AppConnectorPrincipalInfoServiceAccount:AppConnectorPrincipalInfoServiceAccount",
                    "description": "ServiceAccount represents a GCP service account.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccount"
            ]
        },
        "gcp:beyondcorp/AppConnectorPrincipalInfoServiceAccount:AppConnectorPrincipalInfoServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "Email address of the service account.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ]
        },
        "gcp:beyondcorp/AppGatewayAllocatedConnection:AppGatewayAllocatedConnection": {
            "properties": {
                "ingressPort": {
                    "type": "integer",
                    "description": "The ingress port of an allocated connection.\n"
                },
                "pscUri": {
                    "type": "string",
                    "description": "The PSC uri of an allocated connection.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayApplicationEndpointMatcher:SecurityGatewayApplicationEndpointMatcher": {
            "properties": {
                "hostname": {
                    "type": "string",
                    "description": "Required. Hostname of the application.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Optional. Ports of the application.\n"
                }
            },
            "type": "object",
            "required": [
                "hostname",
                "ports"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayApplicationIamBindingCondition:SecurityGatewayApplicationIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayApplicationIamMemberCondition:SecurityGatewayApplicationIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstream:SecurityGatewayApplicationUpstream": {
            "properties": {
                "egressPolicy": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamEgressPolicy:SecurityGatewayApplicationUpstreamEgressPolicy",
                    "description": "Optional. Routing policy information.\nStructure is documented below.\n"
                },
                "external": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamExternal:SecurityGatewayApplicationUpstreamExternal",
                    "description": "List of the external endpoints to forward traffic to.\nStructure is documented below.\n"
                },
                "network": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamNetwork:SecurityGatewayApplicationUpstreamNetwork",
                    "description": "Network to forward traffic to.\nStructure is documented below.\n"
                },
                "proxyProtocol": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocol:SecurityGatewayApplicationUpstreamProxyProtocol",
                    "description": "Shared proxy configuration for all apps.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamEgressPolicy:SecurityGatewayApplicationUpstreamEgressPolicy": {
            "properties": {
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. List of regions where the application sends traffic to.\n"
                }
            },
            "type": "object",
            "required": [
                "regions"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamExternal:SecurityGatewayApplicationUpstreamExternal": {
            "properties": {
                "endpoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamExternalEndpoint:SecurityGatewayApplicationUpstreamExternalEndpoint"
                    },
                    "description": "List of the endpoints to forward traffic to.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoints"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamExternalEndpoint:SecurityGatewayApplicationUpstreamExternalEndpoint": {
            "properties": {
                "hostname": {
                    "type": "string",
                    "description": "Hostname of the endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port of the endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "hostname",
                "port"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamNetwork:SecurityGatewayApplicationUpstreamNetwork": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Required. Network name is of the format:\n`projects/{project}/global/networks/{network}`\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocol:SecurityGatewayApplicationUpstreamProxyProtocol": {
            "properties": {
                "allowedClientHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The configuration for the proxy.\n"
                },
                "clientIp": {
                    "type": "boolean",
                    "description": "Client IP configuration. The client IP address is included if true.\n"
                },
                "contextualHeaders": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocolContextualHeaders:SecurityGatewayApplicationUpstreamProxyProtocolContextualHeaders",
                    "description": "Configuration for the contextual headers.\nStructure is documented below.\n"
                },
                "gatewayIdentity": {
                    "type": "string",
                    "description": "Gateway identity configuration.\nPossible values are: `RESOURCE_NAME`.\n"
                },
                "metadataHeaders": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Custom resource specific headers along with the values.\nThe names should conform to RFC 9110:\n\u003e Field names SHOULD constrain themselves to alphanumeric characters, \"-\",\nand \".\", and SHOULD begin with a letter.\n\u003e Field values SHOULD contain only ASCII printable characters and tab.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocolContextualHeaders:SecurityGatewayApplicationUpstreamProxyProtocolContextualHeaders": {
            "properties": {
                "deviceInfo": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersDeviceInfo:SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersDeviceInfo",
                    "description": "Device info configuration.\nStructure is documented below.\n"
                },
                "groupInfo": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersGroupInfo:SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersGroupInfo",
                    "description": "Group info configuration.\nStructure is documented below.\n"
                },
                "outputType": {
                    "type": "string",
                    "description": "Default output type for all enabled headers.\nPossible values are: `PROTOBUF`, `JSON`, `NONE`.\n"
                },
                "userInfo": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersUserInfo:SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersUserInfo",
                    "description": "User info configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersDeviceInfo:SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersDeviceInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated device info.\nPossible values are: `PROTOBUF`, `JSON`, `NONE`.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersGroupInfo:SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersGroupInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated group info.\nPossible values are: `PROTOBUF`, `JSON`, `NONE`.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersUserInfo:SecurityGatewayApplicationUpstreamProxyProtocolContextualHeadersUserInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated user info.\nPossible values are: `PROTOBUF`, `JSON`, `NONE`.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayHub:SecurityGatewayHub": {
            "properties": {
                "internetGateway": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayHubInternetGateway:SecurityGatewayHubInternetGateway",
                    "description": "Internet Gateway configuration.\nStructure is documented below.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                }
            },
            "type": "object",
            "required": [
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "internetGateway",
                        "region"
                    ]
                }
            }
        },
        "gcp:beyondcorp/SecurityGatewayHubInternetGateway:SecurityGatewayHubInternetGateway": {
            "properties": {
                "assignedIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nOutput only. List of IP addresses assigned to the Cloud NAT.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "assignedIps"
                    ]
                }
            }
        },
        "gcp:beyondcorp/SecurityGatewayIamBindingCondition:SecurityGatewayIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayIamMemberCondition:SecurityGatewayIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:beyondcorp/SecurityGatewayLogging:SecurityGatewayLogging": {
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayProxyProtocolConfig:SecurityGatewayProxyProtocolConfig": {
            "properties": {
                "allowedClientHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The configuration for the proxy.\n"
                },
                "clientIp": {
                    "type": "boolean",
                    "description": "Client IP configuration. The client IP address is included if true.\n"
                },
                "contextualHeaders": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayProxyProtocolConfigContextualHeaders:SecurityGatewayProxyProtocolConfigContextualHeaders",
                    "description": "Configuration for the contextual headers.\nStructure is documented below.\n"
                },
                "gatewayIdentity": {
                    "type": "string",
                    "description": "Gateway identity configuration.\nPossible values are: `RESOURCE_NAME`.\n"
                },
                "metadataHeaders": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Custom resource specific headers along with the values.\nThe names should conform to RFC 9110:\n\u003e Field names SHOULD constrain themselves to alphanumeric characters, \"-\",\nand \".\", and SHOULD begin with a letter.\n\u003e Field values SHOULD contain only ASCII printable characters and tab.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayProxyProtocolConfigContextualHeaders:SecurityGatewayProxyProtocolConfigContextualHeaders": {
            "properties": {
                "deviceInfo": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayProxyProtocolConfigContextualHeadersDeviceInfo:SecurityGatewayProxyProtocolConfigContextualHeadersDeviceInfo",
                    "description": "Device info configuration.\nStructure is documented below.\n"
                },
                "groupInfo": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayProxyProtocolConfigContextualHeadersGroupInfo:SecurityGatewayProxyProtocolConfigContextualHeadersGroupInfo",
                    "description": "Group info configuration.\nStructure is documented below.\n"
                },
                "outputType": {
                    "type": "string",
                    "description": "Default output type for all enabled headers.\nPossible values are: `PROTOBUF`, `JSON`, `NONE`.\n"
                },
                "userInfo": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayProxyProtocolConfigContextualHeadersUserInfo:SecurityGatewayProxyProtocolConfigContextualHeadersUserInfo",
                    "description": "User info configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayProxyProtocolConfigContextualHeadersDeviceInfo:SecurityGatewayProxyProtocolConfigContextualHeadersDeviceInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated device info.\nPossible values are: `PROTOBUF`, `JSON`, `NONE`.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayProxyProtocolConfigContextualHeadersGroupInfo:SecurityGatewayProxyProtocolConfigContextualHeadersGroupInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated group info.\nPossible values are: `PROTOBUF`, `JSON`, `NONE`.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayProxyProtocolConfigContextualHeadersUserInfo:SecurityGatewayProxyProtocolConfigContextualHeadersUserInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated user info.\nPossible values are: `PROTOBUF`, `JSON`, `NONE`.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayServiceDiscovery:SecurityGatewayServiceDiscovery": {
            "properties": {
                "apiGateway": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayServiceDiscoveryApiGateway:SecurityGatewayServiceDiscoveryApiGateway",
                    "description": "External API configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayServiceDiscoveryApiGateway:SecurityGatewayServiceDiscoveryApiGateway": {
            "properties": {
                "resourceOverride": {
                    "$ref": "#/types/gcp:beyondcorp/SecurityGatewayServiceDiscoveryApiGatewayResourceOverride:SecurityGatewayServiceDiscoveryApiGatewayResourceOverride",
                    "description": "Enables fetching resource model updates to alter service behavior per Chrome profile.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/SecurityGatewayServiceDiscoveryApiGatewayResourceOverride:SecurityGatewayServiceDiscoveryApiGatewayResourceOverride": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Contains uri path fragment where HTTP request is sent.\n"
                }
            },
            "type": "object"
        },
        "gcp:beyondcorp/getAppConnectionApplicationEndpoint:getAppConnectionApplicationEndpoint": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "Hostname or IP address of the remote application endpoint.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port of the remote application endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "host",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getAppConnectionGateway:getAppConnectionGateway": {
            "properties": {
                "appGateway": {
                    "type": "string",
                    "description": "AppGateway name in following format: projects/{project_id}/locations/{locationId}/appgateways/{gateway_id}.\n"
                },
                "ingressPort": {
                    "type": "integer",
                    "description": "Ingress port reserved on the gateways for this AppConnection, if not specified or zero, the default port is 19443.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of hosting used by the gateway. Refer to\nhttps://cloud.google.com/beyondcorp/docs/reference/rest/v1/projects.locations.appConnections#Type_1\nfor a list of possible values.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "Server-defined URI for this resource.\n"
                }
            },
            "type": "object",
            "required": [
                "appGateway",
                "ingressPort",
                "type",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getAppConnectorPrincipalInfo:getAppConnectorPrincipalInfo": {
            "properties": {
                "serviceAccounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/getAppConnectorPrincipalInfoServiceAccount:getAppConnectorPrincipalInfoServiceAccount"
                    },
                    "description": "ServiceAccount represents a GCP service account.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccounts"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getAppConnectorPrincipalInfoServiceAccount:getAppConnectorPrincipalInfoServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "Email address of the service account.\n"
                }
            },
            "type": "object",
            "required": [
                "email"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getAppGatewayAllocatedConnection:getAppGatewayAllocatedConnection": {
            "properties": {
                "ingressPort": {
                    "type": "integer",
                    "description": "The ingress port of an allocated connection.\n"
                },
                "pscUri": {
                    "type": "string",
                    "description": "The PSC uri of an allocated connection.\n"
                }
            },
            "type": "object",
            "required": [
                "ingressPort",
                "pscUri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayHub:getSecurityGatewayHub": {
            "properties": {
                "internetGateways": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/getSecurityGatewayHubInternetGateway:getSecurityGatewayHubInternetGateway"
                    },
                    "description": "Internet Gateway configuration.\n"
                },
                "region": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "internetGateways",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayHubInternetGateway:getSecurityGatewayHubInternetGateway": {
            "properties": {
                "assignedIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Output only. List of IP addresses assigned to the Cloud NAT.\n"
                }
            },
            "type": "object",
            "required": [
                "assignedIps"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayLogging:getSecurityGatewayLogging": {
            "type": "object"
        },
        "gcp:beyondcorp/getSecurityGatewayProxyProtocolConfig:getSecurityGatewayProxyProtocolConfig": {
            "properties": {
                "allowedClientHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The configuration for the proxy.\n"
                },
                "clientIp": {
                    "type": "boolean",
                    "description": "Client IP configuration. The client IP address is included if true.\n"
                },
                "contextualHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/getSecurityGatewayProxyProtocolConfigContextualHeader:getSecurityGatewayProxyProtocolConfigContextualHeader"
                    },
                    "description": "Configuration for the contextual headers.\n"
                },
                "gatewayIdentity": {
                    "type": "string",
                    "description": "Gateway identity configuration. Possible values: [\"RESOURCE_NAME\"]\n"
                },
                "metadataHeaders": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Custom resource specific headers along with the values.\nThe names should conform to RFC 9110:\n\u003e Field names SHOULD constrain themselves to alphanumeric characters, \"-\",\n  and \".\", and SHOULD begin with a letter.\n\u003e Field values SHOULD contain only ASCII printable characters and tab.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedClientHeaders",
                "clientIp",
                "contextualHeaders",
                "gatewayIdentity",
                "metadataHeaders"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayProxyProtocolConfigContextualHeader:getSecurityGatewayProxyProtocolConfigContextualHeader": {
            "properties": {
                "deviceInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/getSecurityGatewayProxyProtocolConfigContextualHeaderDeviceInfo:getSecurityGatewayProxyProtocolConfigContextualHeaderDeviceInfo"
                    },
                    "description": "Device info configuration.\n"
                },
                "groupInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/getSecurityGatewayProxyProtocolConfigContextualHeaderGroupInfo:getSecurityGatewayProxyProtocolConfigContextualHeaderGroupInfo"
                    },
                    "description": "Group info configuration.\n"
                },
                "outputType": {
                    "type": "string",
                    "description": "Default output type for all enabled headers. Possible values: [\"PROTOBUF\", \"JSON\", \"NONE\"]\n"
                },
                "userInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/getSecurityGatewayProxyProtocolConfigContextualHeaderUserInfo:getSecurityGatewayProxyProtocolConfigContextualHeaderUserInfo"
                    },
                    "description": "User info configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceInfos",
                "groupInfos",
                "outputType",
                "userInfos"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayProxyProtocolConfigContextualHeaderDeviceInfo:getSecurityGatewayProxyProtocolConfigContextualHeaderDeviceInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated device info. Possible values: [\"PROTOBUF\", \"JSON\", \"NONE\"]\n"
                }
            },
            "type": "object",
            "required": [
                "outputType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayProxyProtocolConfigContextualHeaderGroupInfo:getSecurityGatewayProxyProtocolConfigContextualHeaderGroupInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated group info. Possible values: [\"PROTOBUF\", \"JSON\", \"NONE\"]\n"
                }
            },
            "type": "object",
            "required": [
                "outputType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayProxyProtocolConfigContextualHeaderUserInfo:getSecurityGatewayProxyProtocolConfigContextualHeaderUserInfo": {
            "properties": {
                "outputType": {
                    "type": "string",
                    "description": "The output type of the delegated user info. Possible values: [\"PROTOBUF\", \"JSON\", \"NONE\"]\n"
                }
            },
            "type": "object",
            "required": [
                "outputType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayServiceDiscovery:getSecurityGatewayServiceDiscovery": {
            "properties": {
                "apiGateways": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/getSecurityGatewayServiceDiscoveryApiGateway:getSecurityGatewayServiceDiscoveryApiGateway"
                    },
                    "description": "External API configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "apiGateways"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayServiceDiscoveryApiGateway:getSecurityGatewayServiceDiscoveryApiGateway": {
            "properties": {
                "resourceOverrides": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:beyondcorp/getSecurityGatewayServiceDiscoveryApiGatewayResourceOverride:getSecurityGatewayServiceDiscoveryApiGatewayResourceOverride"
                    },
                    "description": "Enables fetching resource model updates to alter service behavior per Chrome profile.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceOverrides"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:beyondcorp/getSecurityGatewayServiceDiscoveryApiGatewayResourceOverride:getSecurityGatewayServiceDiscoveryApiGatewayResourceOverride": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Contains uri path fragment where HTTP request is sent.\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:biglake/DatabaseHiveOptions:DatabaseHiveOptions": {
            "properties": {
                "locationUri": {
                    "type": "string",
                    "description": "Cloud Storage folder URI where the database data is stored, starting with \"gs://\".\n"
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Stores user supplied Hive database parameters. An object containing a\nlist of\"key\": value pairs.\nExample: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n"
                }
            },
            "type": "object"
        },
        "gcp:biglake/HiveCatalogIamBindingCondition:HiveCatalogIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:biglake/HiveCatalogIamMemberCondition:HiveCatalogIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:biglake/HiveCatalogReplica:HiveCatalogReplica": {
            "properties": {
                "region": {
                    "type": "string",
                    "description": "(Output)\nThe region of the replica, e.g., `us-east1`.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nIf the catalog is replicated to multiple regions, this enum describes the current state of the replica. STATE_UNSPECIFIED - The replica state is unknown. STATE_PRIMARY - The replica is the writable primary. STATE_PRIMARY_IN_PROGRESS - The replica has been recently assigned as the primary, but not all databases are writeable yet. STATE_SECONDARY - The replica is a read-only secondary replica.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "region",
                        "state"
                    ]
                }
            }
        },
        "gcp:biglake/IcebergCatalogIamBindingCondition:IcebergCatalogIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:biglake/IcebergCatalogIamMemberCondition:IcebergCatalogIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:biglake/IcebergCatalogReplica:IcebergCatalogReplica": {
            "properties": {
                "region": {
                    "type": "string",
                    "description": "(Output)\nThe region of the replica, e.g., `us-east1`.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nIf the IcebergCatalog is replicated to multiple regions, this describes the current state of the replica. STATE_UNKNOWN - The replica state is unknown. STATE_PRIMARY - The replica is the writable primary. STATE_PRIMARY_IN_PROGRESS - The replica has been recently assigned as the primary, but not all namespaces are writeable yet. STATE_SECONDARY - The replica is a read-only secondary replica.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "region",
                        "state"
                    ]
                }
            }
        },
        "gcp:biglake/IcebergCatalogRestrictedLocationsConfig:IcebergCatalogRestrictedLocationsConfig": {
            "properties": {
                "restrictedLocations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of GCS locations (e.g., `gs://my-other-bucket/...`) that are\npermitted for use by resources within this catalog. Each entry can be\neither a GCS bucket or a path within it.\n"
                }
            },
            "type": "object"
        },
        "gcp:biglake/IcebergNamespaceIamBindingCondition:IcebergNamespaceIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:biglake/IcebergNamespaceIamMemberCondition:IcebergNamespaceIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:biglake/IcebergTableIamBindingCondition:IcebergTableIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:biglake/IcebergTableIamMemberCondition:IcebergTableIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:biglake/IcebergTablePartitionSpec:IcebergTablePartitionSpec": {
            "properties": {
                "fields": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:biglake/IcebergTablePartitionSpecField:IcebergTablePartitionSpecField"
                    },
                    "description": "Structure is documented below.\n"
                },
                "specId": {
                    "type": "integer",
                    "description": "(Output)\nThe unique identifier of the partition spec.\n"
                }
            },
            "type": "object",
            "required": [
                "fields"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "fields",
                        "specId"
                    ]
                }
            }
        },
        "gcp:biglake/IcebergTablePartitionSpecField:IcebergTablePartitionSpecField": {
            "properties": {
                "fieldId": {
                    "type": "integer",
                    "description": "(Output)\nThe unique identifier of the partition field.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the partition field.\n"
                },
                "sourceId": {
                    "type": "integer",
                    "description": "The source field ID for the sort field.\n"
                },
                "transform": {
                    "type": "string",
                    "description": "The transform to apply to the source field.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "sourceId",
                "transform"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "fieldId",
                        "name",
                        "sourceId",
                        "transform"
                    ]
                }
            }
        },
        "gcp:biglake/IcebergTableSchema:IcebergTableSchema": {
            "properties": {
                "fields": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:biglake/IcebergTableSchemaField:IcebergTableSchemaField"
                    },
                    "description": "Structure is documented below.\n"
                },
                "identifierFieldIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "The field IDs that make up the identifier for the table.\n"
                },
                "schemaId": {
                    "type": "integer",
                    "description": "(Output)\nThe unique identifier of the schema.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the schema.\n"
                }
            },
            "type": "object",
            "required": [
                "fields"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "fields",
                        "identifierFieldIds",
                        "schemaId"
                    ]
                }
            }
        },
        "gcp:biglake/IcebergTableSchemaField:IcebergTableSchemaField": {
            "properties": {
                "doc": {
                    "type": "string",
                    "description": "A description of the field.\n"
                },
                "id": {
                    "type": "integer",
                    "description": "The unique identifier of the field.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the partition field.\n"
                },
                "required": {
                    "type": "boolean",
                    "description": "Whether the field is required.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the field.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "name",
                "required",
                "type"
            ]
        },
        "gcp:biglake/IcebergTableSortOrder:IcebergTableSortOrder": {
            "properties": {
                "fields": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:biglake/IcebergTableSortOrderField:IcebergTableSortOrderField"
                    },
                    "description": "Structure is documented below.\n"
                },
                "orderId": {
                    "type": "integer",
                    "description": "(Output)\nThe unique identifier of the sort order.\n"
                }
            },
            "type": "object",
            "required": [
                "fields"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "fields",
                        "orderId"
                    ]
                }
            }
        },
        "gcp:biglake/IcebergTableSortOrderField:IcebergTableSortOrderField": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction for the sort field. Possible values: \"asc\", \"desc\".\n"
                },
                "nullOrder": {
                    "type": "string",
                    "description": "The null ordering for the sort field. Possible values: \"nulls-first\", \"nulls-last\".\n"
                },
                "sourceId": {
                    "type": "integer",
                    "description": "The source field ID for the sort field.\n"
                },
                "transform": {
                    "type": "string",
                    "description": "The transform to apply to the source field.\n"
                }
            },
            "type": "object",
            "required": [
                "direction",
                "nullOrder",
                "sourceId",
                "transform"
            ]
        },
        "gcp:biglake/TableHiveOptions:TableHiveOptions": {
            "properties": {
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Stores user supplied Hive table parameters. An object containing a\nlist of \"key\": value pairs.\nExample: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n"
                },
                "storageDescriptor": {
                    "$ref": "#/types/gcp:biglake/TableHiveOptionsStorageDescriptor:TableHiveOptionsStorageDescriptor",
                    "description": "Stores physical storage information on the data.\nStructure is documented below.\n"
                },
                "tableType": {
                    "type": "string",
                    "description": "Hive table type. For example, MANAGED_TABLE, EXTERNAL_TABLE.\n"
                }
            },
            "type": "object"
        },
        "gcp:biglake/TableHiveOptionsStorageDescriptor:TableHiveOptionsStorageDescriptor": {
            "properties": {
                "inputFormat": {
                    "type": "string",
                    "description": "The fully qualified Java class name of the input format.\n"
                },
                "locationUri": {
                    "type": "string",
                    "description": "Cloud Storage folder URI where the table data is stored, starting with \"gs://\".\n"
                },
                "outputFormat": {
                    "type": "string",
                    "description": "The fully qualified Java class name of the output format.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/AppProfileDataBoostIsolationReadOnly:AppProfileDataBoostIsolationReadOnly": {
            "properties": {
                "computeBillingOwner": {
                    "type": "string",
                    "description": "The Compute Billing Owner for this Data Boost App Profile.\nPossible values are: `HOST_PAYS`.\n"
                }
            },
            "type": "object",
            "required": [
                "computeBillingOwner"
            ]
        },
        "gcp:bigquery/AppProfileSingleClusterRouting:AppProfileSingleClusterRouting": {
            "properties": {
                "allowTransactionalWrites": {
                    "type": "boolean",
                    "description": "If true, CheckAndMutateRow and ReadModifyWriteRow requests are allowed by this app profile.\nIt is unsafe to send these requests to the same table/row/column in multiple clusters.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The cluster to which read/write requests should be routed.\n"
                }
            },
            "type": "object",
            "required": [
                "clusterId"
            ]
        },
        "gcp:bigquery/AppProfileStandardIsolation:AppProfileStandardIsolation": {
            "properties": {
                "priority": {
                    "type": "string",
                    "description": "The priority of requests sent using this app profile.\nPossible values are: `PRIORITY_LOW`, `PRIORITY_MEDIUM`, `PRIORITY_HIGH`.\n"
                }
            },
            "type": "object",
            "required": [
                "priority"
            ]
        },
        "gcp:bigquery/BiReservationPreferredTable:BiReservationPreferredTable": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset in the above project.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The assigned project ID of the project.\n"
                },
                "tableId": {
                    "type": "string",
                    "description": "The ID of the table in the above dataset.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/ConnectionAws:ConnectionAws": {
            "properties": {
                "accessRole": {
                    "$ref": "#/types/gcp:bigquery/ConnectionAwsAccessRole:ConnectionAwsAccessRole",
                    "description": "Authentication using Google owned service account to assume into customer's AWS IAM Role.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "accessRole"
            ]
        },
        "gcp:bigquery/ConnectionAwsAccessRole:ConnectionAwsAccessRole": {
            "properties": {
                "iamRoleId": {
                    "type": "string",
                    "description": "The user’s AWS IAM Role that trusts the Google-owned AWS IAM user Connection.\n"
                },
                "identity": {
                    "type": "string",
                    "description": "(Output)\nA unique Google-owned and Google-generated identity for the Connection. This identity will be used to access the user's AWS IAM Role.\n"
                }
            },
            "type": "object",
            "required": [
                "iamRoleId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "iamRoleId",
                        "identity"
                    ]
                }
            }
        },
        "gcp:bigquery/ConnectionAzure:ConnectionAzure": {
            "properties": {
                "application": {
                    "type": "string",
                    "description": "(Output)\nThe name of the Azure Active Directory Application.\n"
                },
                "clientId": {
                    "type": "string",
                    "description": "(Output)\nThe client id of the Azure Active Directory Application.\n"
                },
                "customerTenantId": {
                    "type": "string",
                    "description": "The id of customer's directory that host the data.\n"
                },
                "federatedApplicationClientId": {
                    "type": "string",
                    "description": "The Azure Application (client) ID where the federated credentials will be hosted.\n"
                },
                "identity": {
                    "type": "string",
                    "description": "(Output)\nA unique Google-owned and Google-generated identity for the Connection. This identity will be used to access the user's Azure Active Directory Application.\n"
                },
                "objectId": {
                    "type": "string",
                    "description": "(Output)\nThe object id of the Azure Active Directory Application.\n"
                },
                "redirectUri": {
                    "type": "string",
                    "description": "(Output)\nThe URL user will be redirected to after granting consent during connection setup.\n"
                }
            },
            "type": "object",
            "required": [
                "customerTenantId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "application",
                        "clientId",
                        "customerTenantId",
                        "identity",
                        "objectId",
                        "redirectUri"
                    ]
                }
            }
        },
        "gcp:bigquery/ConnectionCloudResource:ConnectionCloudResource": {
            "properties": {
                "serviceAccountId": {
                    "type": "string",
                    "description": "(Output)\nThe account ID of the service created for the purpose of this connection.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceAccountId"
                    ]
                }
            }
        },
        "gcp:bigquery/ConnectionCloudSpanner:ConnectionCloudSpanner": {
            "properties": {
                "database": {
                    "type": "string",
                    "description": "Cloud Spanner database in the form `project/instance/database'.\n"
                },
                "databaseRole": {
                    "type": "string",
                    "description": "Cloud Spanner database role for fine-grained access control. The Cloud Spanner admin should have provisioned the database role with appropriate permissions, such as `SELECT` and `INSERT`. Other users should only use roles provided by their Cloud Spanner admins. The database role name must start with a letter, and can only contain letters, numbers, and underscores. For more details, see https://cloud.google.com/spanner/docs/fgac-about.\n"
                },
                "maxParallelism": {
                    "type": "integer",
                    "description": "Allows setting max parallelism per query when executing on Spanner independent compute resources. If unspecified, default values of parallelism are chosen that are dependent on the Cloud Spanner instance configuration. `useParallelism` and `useDataBoost` must be set when setting max parallelism.\n"
                },
                "useDataBoost": {
                    "type": "boolean",
                    "description": "If set, the request will be executed via Spanner independent compute resources. \u003cspan pulumi-lang-nodejs=\"`useParallelism`\" pulumi-lang-dotnet=\"`UseParallelism`\" pulumi-lang-go=\"`useParallelism`\" pulumi-lang-python=\"`use_parallelism`\" pulumi-lang-yaml=\"`useParallelism`\" pulumi-lang-java=\"`useParallelism`\" pulumi-lang-hcl=\"`use_parallelism`\"\u003e`useParallelism`\u003c/span\u003e must be set when using data boost.\n"
                },
                "useParallelism": {
                    "type": "boolean",
                    "description": "If parallelism should be used when reading from Cloud Spanner.\n"
                },
                "useServerlessAnalytics": {
                    "type": "boolean",
                    "description": "(Optional, Deprecated)\nIf the serverless analytics service should be used to read data from Cloud Spanner. `useParallelism` must be set when using serverless analytics.\n\n\u003e **Warning:** `useServerlessAnalytics` is deprecated and will be removed in a future major release. Use `useDataBoost` instead.\n",
                    "deprecationMessage": "`useServerlessAnalytics` is deprecated and will be removed in a future major release. Use `useDataBoost` instead."
                }
            },
            "type": "object",
            "required": [
                "database"
            ]
        },
        "gcp:bigquery/ConnectionCloudSql:ConnectionCloudSql": {
            "properties": {
                "credential": {
                    "$ref": "#/types/gcp:bigquery/ConnectionCloudSqlCredential:ConnectionCloudSqlCredential",
                    "description": "Cloud SQL properties.\nStructure is documented below.\n"
                },
                "database": {
                    "type": "string",
                    "description": "Database name.\n"
                },
                "instanceId": {
                    "type": "string",
                    "description": "Cloud SQL instance ID in the form project:location:instance.\n"
                },
                "serviceAccountId": {
                    "type": "string",
                    "description": "(Output)\nWhen the connection is used in the context of an operation in BigQuery, this service account will serve as the identity being used for connecting to the CloudSQL instance specified in this connection.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Cloud SQL database.\nPossible values are: `DATABASE_TYPE_UNSPECIFIED`, `POSTGRES`, `MYSQL`.\n"
                }
            },
            "type": "object",
            "required": [
                "credential",
                "database",
                "instanceId",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "credential",
                        "database",
                        "instanceId",
                        "serviceAccountId",
                        "type"
                    ]
                }
            }
        },
        "gcp:bigquery/ConnectionCloudSqlCredential:ConnectionCloudSqlCredential": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for database.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "Username for database.\n"
                }
            },
            "type": "object",
            "required": [
                "password",
                "username"
            ]
        },
        "gcp:bigquery/ConnectionConfiguration:ConnectionConfiguration": {
            "properties": {
                "asset": {
                    "$ref": "#/types/gcp:bigquery/ConnectionConfigurationAsset:ConnectionConfigurationAsset",
                    "description": "Asset configuration for the connector.\nStructure is documented below.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:bigquery/ConnectionConfigurationAuthentication:ConnectionConfigurationAuthentication",
                    "description": "Authentication configuration for the connector.\nStructure is documented below.\n"
                },
                "connectorId": {
                    "type": "string",
                    "description": "The ID of the connector. Possible values include `google-alloydb`, `google-cloudsql-mysql`,\n`google-cloudsql-postgres`, and other connector IDs supported by the BigQuery Connector framework.\n",
                    "willReplaceOnChanges": true
                },
                "endpoint": {
                    "$ref": "#/types/gcp:bigquery/ConnectionConfigurationEndpoint:ConnectionConfigurationEndpoint",
                    "description": "Endpoint configuration for the connector.\nStructure is documented below.\n"
                },
                "network": {
                    "$ref": "#/types/gcp:bigquery/ConnectionConfigurationNetwork:ConnectionConfigurationNetwork",
                    "description": "Network configuration for the connector.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "asset",
                "connectorId"
            ]
        },
        "gcp:bigquery/ConnectionConfigurationAsset:ConnectionConfigurationAsset": {
            "properties": {
                "database": {
                    "type": "string",
                    "description": "The name of the database.\n"
                },
                "googleCloudResource": {
                    "type": "string",
                    "description": "The full resource name of the Google Cloud resource.\nFor AlloyDB, this is in the format of\n`//alloydb.googleapis.com/projects/{project}/locations/{region}/clusters/{cluster}/instances/{instance}`.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/ConnectionConfigurationAuthentication:ConnectionConfigurationAuthentication": {
            "properties": {
                "serviceAccount": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The service account used for authenticating with the connector.\n"
                },
                "usernamePassword": {
                    "$ref": "#/types/gcp:bigquery/ConnectionConfigurationAuthenticationUsernamePassword:ConnectionConfigurationAuthenticationUsernamePassword",
                    "description": "Username/password authentication configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceAccount"
                    ]
                }
            }
        },
        "gcp:bigquery/ConnectionConfigurationAuthenticationUsernamePassword:ConnectionConfigurationAuthenticationUsernamePassword": {
            "properties": {
                "password": {
                    "$ref": "#/types/gcp:bigquery/ConnectionConfigurationAuthenticationUsernamePasswordPassword:ConnectionConfigurationAuthenticationUsernamePasswordPassword",
                    "description": "Password configuration for the connector.\nStructure is documented below.\n"
                },
                "username": {
                    "type": "string",
                    "description": "Username for the connector.\n"
                }
            },
            "type": "object",
            "required": [
                "password",
                "username"
            ]
        },
        "gcp:bigquery/ConnectionConfigurationAuthenticationUsernamePasswordPassword:ConnectionConfigurationAuthenticationUsernamePasswordPassword": {
            "properties": {
                "plaintext": {
                    "type": "string",
                    "description": "The plaintext password.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "secretType": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The type of the secret.\n"
                }
            },
            "type": "object",
            "required": [
                "plaintext"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "plaintext",
                        "secretType"
                    ]
                }
            }
        },
        "gcp:bigquery/ConnectionConfigurationEndpoint:ConnectionConfigurationEndpoint": {
            "properties": {
                "hostPort": {
                    "type": "string",
                    "description": "Host and port in the format of `host:port` for the connector endpoint.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/ConnectionConfigurationNetwork:ConnectionConfigurationNetwork": {
            "properties": {
                "privateServiceConnect": {
                    "$ref": "#/types/gcp:bigquery/ConnectionConfigurationNetworkPrivateServiceConnect:ConnectionConfigurationNetworkPrivateServiceConnect",
                    "description": "Private Service Connect configuration for the connector.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/ConnectionConfigurationNetworkPrivateServiceConnect:ConnectionConfigurationNetworkPrivateServiceConnect": {
            "properties": {
                "networkAttachment": {
                    "type": "string",
                    "description": "The resource name of a network attachment in the format of\n`projects/{project}/regions/{region}/networkAttachments/{networkAttachment}`.\n"
                }
            },
            "type": "object",
            "required": [
                "networkAttachment"
            ]
        },
        "gcp:bigquery/ConnectionIamBindingCondition:ConnectionIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/ConnectionIamMemberCondition:ConnectionIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/ConnectionSpark:ConnectionSpark": {
            "properties": {
                "metastoreServiceConfig": {
                    "$ref": "#/types/gcp:bigquery/ConnectionSparkMetastoreServiceConfig:ConnectionSparkMetastoreServiceConfig",
                    "description": "Dataproc Metastore Service configuration for the connection.\nStructure is documented below.\n"
                },
                "serviceAccountId": {
                    "type": "string",
                    "description": "(Output)\nThe account ID of the service created for the purpose of this connection.\n"
                },
                "sparkHistoryServerConfig": {
                    "$ref": "#/types/gcp:bigquery/ConnectionSparkSparkHistoryServerConfig:ConnectionSparkSparkHistoryServerConfig",
                    "description": "Spark History Server configuration for the connection.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceAccountId"
                    ]
                }
            }
        },
        "gcp:bigquery/ConnectionSparkMetastoreServiceConfig:ConnectionSparkMetastoreServiceConfig": {
            "properties": {
                "metastoreService": {
                    "type": "string",
                    "description": "Resource name of an existing Dataproc Metastore service in the form of projects/[projectId]/locations/[region]/services/[serviceId].\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/ConnectionSparkSparkHistoryServerConfig:ConnectionSparkSparkHistoryServerConfig": {
            "properties": {
                "dataprocCluster": {
                    "type": "string",
                    "description": "Resource name of an existing Dataproc Cluster to act as a Spark History Server for the connection if the form of projects/[projectId]/regions/[region]/clusters/\u003cspan pulumi-lang-nodejs=\"[clusterName]\" pulumi-lang-dotnet=\"[ClusterName]\" pulumi-lang-go=\"[clusterName]\" pulumi-lang-python=\"[cluster_name]\" pulumi-lang-yaml=\"[clusterName]\" pulumi-lang-java=\"[clusterName]\" pulumi-lang-hcl=\"[cluster_name]\"\u003e[clusterName]\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/DataTransferConfigEmailPreferences:DataTransferConfigEmailPreferences": {
            "properties": {
                "enableFailureEmail": {
                    "type": "boolean",
                    "description": "If true, email notifications will be sent on transfer run failures.\n"
                }
            },
            "type": "object",
            "required": [
                "enableFailureEmail"
            ]
        },
        "gcp:bigquery/DataTransferConfigEncryptionConfiguration:DataTransferConfigEncryptionConfiguration": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The name of the KMS key used for encrypting BigQuery data.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ]
        },
        "gcp:bigquery/DataTransferConfigScheduleOptions:DataTransferConfigScheduleOptions": {
            "properties": {
                "disableAutoScheduling": {
                    "type": "boolean",
                    "description": "If true, automatic scheduling of data transfer runs for this\nconfiguration will be disabled. The runs can be started on ad-hoc\nbasis using transferConfigs.startManualRuns API. When automatic\nscheduling is disabled, the TransferConfig.schedule field will\nbe ignored.\n"
                },
                "endTime": {
                    "type": "string",
                    "description": "Defines time to stop scheduling transfer runs. A transfer run cannot be\nscheduled at or after the end time. The end time can be changed at any\nmoment. The time when a data transfer can be triggered manually is not\nlimited by this option.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Specifies time to start scheduling transfer runs. The first run will be\nscheduled at or after the start time according to a recurrence pattern\ndefined in the schedule string. The start time can be changed at any\nmoment. The time when a data transfer can be triggered manually is not\nlimited by this option.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/DataTransferConfigSensitiveParams:DataTransferConfigSensitiveParams": {
            "properties": {
                "secretAccessKey": {
                    "type": "string",
                    "description": "The Secret Access Key of the AWS account transferring data from.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "secretAccessKeyWo": {
                    "type": "string",
                    "description": "**NOTE:** This field is write-only and its value will not be updated in state as part of read operations.\n(Optional, Write-Only)\nThe Secret Access Key of the AWS account transferring data from.\n**Note**: This property is write-only and will not be read from the API.\n\n\u003e **Note:** One of \u003cspan pulumi-lang-nodejs=\"`secretAccessKey`\" pulumi-lang-dotnet=\"`SecretAccessKey`\" pulumi-lang-go=\"`secretAccessKey`\" pulumi-lang-python=\"`secret_access_key`\" pulumi-lang-yaml=\"`secretAccessKey`\" pulumi-lang-java=\"`secretAccessKey`\" pulumi-lang-hcl=\"`secret_access_key`\"\u003e`secretAccessKey`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secretAccessKeyWo`\" pulumi-lang-dotnet=\"`SecretAccessKeyWo`\" pulumi-lang-go=\"`secretAccessKeyWo`\" pulumi-lang-python=\"`secret_access_key_wo`\" pulumi-lang-yaml=\"`secretAccessKeyWo`\" pulumi-lang-java=\"`secretAccessKeyWo`\" pulumi-lang-hcl=\"`secret_access_key_wo`\"\u003e`secretAccessKeyWo`\u003c/span\u003e can only be set.\n",
                    "secret": true
                },
                "secretAccessKeyWoVersion": {
                    "type": "integer",
                    "description": "The version of the sensitive params - used to trigger updates of the write-only params. For more info see [updating write-only arguments](https://www.terraform.io/docs/providers/google/guides/using_write_only_arguments.html#updating-write-only-arguments)\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/Datapolicyv2DataPolicyDataMaskingPolicy:Datapolicyv2DataPolicyDataMaskingPolicy": {
            "properties": {
                "predefinedExpression": {
                    "type": "string",
                    "description": "A predefined masking expression.\nPossible values:\nSHA256\nALWAYS_NULL\nDEFAULT_MASKING_VALUE\nLAST_FOUR_CHARACTERS\nFIRST_FOUR_CHARACTERS\nEMAIL_MASK\nDATE_YEAR_MASK\nRANDOM_HASH\n"
                },
                "routine": {
                    "type": "string",
                    "description": "The name of the BigQuery routine that contains the custom masking\nroutine, in the format of\n`projects/{project_number}/datasets/{dataset_id}/routines/{routine_id}`.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/Datapolicyv2DataPolicyIamBindingCondition:Datapolicyv2DataPolicyIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/Datapolicyv2DataPolicyIamMemberCondition:Datapolicyv2DataPolicyIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/DatasetAccess:DatasetAccess": {
            "properties": {
                "condition": {
                    "$ref": "#/types/gcp:bigquery/DatasetAccessCondition:DatasetAccessCondition",
                    "description": "Condition for the binding. If CEL expression in this field is true, this\naccess binding will be considered.\nStructure is documented below.\n"
                },
                "dataset": {
                    "$ref": "#/types/gcp:bigquery/DatasetAccessDataset:DatasetAccessDataset",
                    "description": "Grants all resources of particular types in a particular dataset read access to the current dataset.\nStructure is documented below.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "A domain to grant access to. Any users signed in with the\ndomain specified will be granted the specified access\n"
                },
                "groupByEmail": {
                    "type": "string",
                    "description": "An email address of a Google Group to grant access to.\n"
                },
                "iamMember": {
                    "type": "string",
                    "description": "Some other type of member that appears in the IAM Policy but isn't a user,\ngroup, domain, or special group. For example: `allUsers`\n"
                },
                "role": {
                    "type": "string",
                    "description": "Describes the rights granted to the user specified by the other\nmember of the access object. Basic, predefined, and custom roles\nare supported. Predefined roles that have equivalent basic roles\nare swapped by the API to their basic counterparts. See\n[official docs](https://cloud.google.com/bigquery/docs/access-control).\n"
                },
                "routine": {
                    "$ref": "#/types/gcp:bigquery/DatasetAccessRoutine:DatasetAccessRoutine",
                    "description": "A routine from a different dataset to grant access to. Queries\nexecuted against that routine will have read access to tables in\nthis dataset. The role field is not required when this field is\nset. If that routine is updated by any user, access to the routine\nneeds to be granted again via an update operation.\nStructure is documented below.\n"
                },
                "specialGroup": {
                    "type": "string",
                    "description": "A special group to grant access to. Possible values include:\n* `projectOwners`: Owners of the enclosing project.\n* `projectReaders`: Readers of the enclosing project.\n* `projectWriters`: Writers of the enclosing project.\n* `allAuthenticatedUsers`: All authenticated BigQuery users.\n"
                },
                "userByEmail": {
                    "type": "string",
                    "description": "An email address of a user to grant access to. For example:\nfred@example.com\n"
                },
                "view": {
                    "$ref": "#/types/gcp:bigquery/DatasetAccessView:DatasetAccessView",
                    "description": "A view from a different dataset to grant access to. Queries\nexecuted against that view will have read access to tables in\nthis dataset. The role field is not required when this field is\nset. If that view is updated by any user, access to the view\nneeds to be granted again via an update operation.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/DatasetAccessAuthorizedDataset:DatasetAccessAuthorizedDataset": {
            "properties": {
                "dataset": {
                    "$ref": "#/types/gcp:bigquery/DatasetAccessAuthorizedDatasetDataset:DatasetAccessAuthorizedDatasetDataset",
                    "description": "The dataset this entry applies to\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "targetTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Which resources in the dataset this entry applies to. Currently, only views are supported,\nbut additional target types may be added in the future. Possible values: VIEWS\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "dataset",
                "targetTypes"
            ]
        },
        "gcp:bigquery/DatasetAccessAuthorizedDatasetDataset:DatasetAccessAuthorizedDatasetDataset": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId"
            ]
        },
        "gcp:bigquery/DatasetAccessCondition:DatasetAccessCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file\nname and a position in the file.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:bigquery/DatasetAccessDataset:DatasetAccessDataset": {
            "properties": {
                "dataset": {
                    "$ref": "#/types/gcp:bigquery/DatasetAccessDatasetDataset:DatasetAccessDatasetDataset",
                    "description": "The dataset this entry applies to\nStructure is documented below.\n"
                },
                "targetTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Which resources in the dataset this entry applies to. Currently, only views are supported,\nbut additional target types may be added in the future. Possible values: VIEWS\n"
                }
            },
            "type": "object",
            "required": [
                "dataset",
                "targetTypes"
            ]
        },
        "gcp:bigquery/DatasetAccessDatasetDataset:DatasetAccessDatasetDataset": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n"
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId"
            ]
        },
        "gcp:bigquery/DatasetAccessRoutine:DatasetAccessRoutine": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "routineId": {
                    "type": "string",
                    "description": "The ID of the routine. The ID must contain only letters (a-z,\nA-Z), numbers (0-9), or underscores (_). The maximum length\nis 256 characters.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId",
                "routineId"
            ]
        },
        "gcp:bigquery/DatasetAccessView:DatasetAccessView": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "tableId": {
                    "type": "string",
                    "description": "The ID of the table. The ID must contain only letters (a-z,\nA-Z), numbers (0-9), or underscores (_). The maximum length\nis 1,024 characters.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId",
                "tableId"
            ]
        },
        "gcp:bigquery/DatasetDefaultEncryptionConfiguration:DatasetDefaultEncryptionConfiguration": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Describes the Cloud KMS encryption key that will be used to protect destination\nBigQuery table. The BigQuery Service Account associated with your project requires\naccess to this encryption key.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ]
        },
        "gcp:bigquery/DatasetExternalCatalogDatasetOptions:DatasetExternalCatalogDatasetOptions": {
            "properties": {
                "defaultStorageLocationUri": {
                    "type": "string",
                    "description": "The storage location URI for all tables in the dataset. Equivalent to hive metastore's\ndatabase locationUri. Maximum length of 1024 characters.\n"
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of key value pairs defining the parameters and properties of the open source schema.\nMaximum size of 2Mib.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/DatasetExternalDatasetReference:DatasetExternalDatasetReference": {
            "properties": {
                "connection": {
                    "type": "string",
                    "description": "The connection id that is used to access the externalSource.\nFormat: projects/{projectId}/locations/{locationId}/connections/{connectionId}\n",
                    "willReplaceOnChanges": true
                },
                "externalSource": {
                    "type": "string",
                    "description": "External source that backs this dataset.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "connection",
                "externalSource"
            ]
        },
        "gcp:bigquery/DatasetIamBindingCondition:DatasetIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/DatasetIamMemberCondition:DatasetIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/IamBindingCondition:IamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/IamMemberCondition:IamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/JobCopy:JobCopy": {
            "properties": {
                "createDisposition": {
                    "type": "string",
                    "description": "Specifies whether the job is allowed to create new tables. The following values are supported:\nCREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table.\nCREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result.\nCreation, truncation and append actions occur as one atomic update upon job completion\nDefault value is `CREATE_IF_NEEDED`.\nPossible values are: `CREATE_IF_NEEDED`, `CREATE_NEVER`.\n",
                    "willReplaceOnChanges": true
                },
                "destinationEncryptionConfiguration": {
                    "$ref": "#/types/gcp:bigquery/JobCopyDestinationEncryptionConfiguration:JobCopyDestinationEncryptionConfiguration",
                    "description": "Custom encryption configuration (e.g., Cloud KMS keys)\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "destinationTable": {
                    "$ref": "#/types/gcp:bigquery/JobCopyDestinationTable:JobCopyDestinationTable",
                    "description": "The destination table.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "sourceTables": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/JobCopySourceTable:JobCopySourceTable"
                    },
                    "description": "Source tables to copy.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "writeDisposition": {
                    "type": "string",
                    "description": "Specifies the action that occurs if the destination table already exists. The following values are supported:\nWRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result.\nWRITE_APPEND: If the table already exists, BigQuery appends the data to the table.\nWRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result.\nEach action is atomic and only occurs if BigQuery is able to complete the job successfully.\nCreation, truncation and append actions occur as one atomic update upon job completion.\nDefault value is `WRITE_EMPTY`.\nPossible values are: `WRITE_TRUNCATE`, `WRITE_APPEND`, `WRITE_EMPTY`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "sourceTables"
            ]
        },
        "gcp:bigquery/JobCopyDestinationEncryptionConfiguration:JobCopyDestinationEncryptionConfiguration": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table.\nThe BigQuery Service Account associated with your project requires access to this encryption key.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyVersion": {
                    "type": "string",
                    "description": "(Output)\nDescribes the Cloud KMS encryption key version used to protect destination BigQuery table.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeyName",
                        "kmsKeyVersion"
                    ]
                }
            }
        },
        "gcp:bigquery/JobCopyDestinationTable:JobCopyDestinationTable": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "tableId": {
                    "type": "string",
                    "description": "The table. Can be specified `{{table_id}}` if \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\" pulumi-lang-hcl=\"`project_id`\"\u003e`projectId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`datasetId`\" pulumi-lang-dotnet=\"`DatasetId`\" pulumi-lang-go=\"`datasetId`\" pulumi-lang-python=\"`dataset_id`\" pulumi-lang-yaml=\"`datasetId`\" pulumi-lang-java=\"`datasetId`\" pulumi-lang-hcl=\"`dataset_id`\"\u003e`datasetId`\u003c/span\u003e are also set,\nor of the form `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}` if not.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "tableId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "datasetId",
                        "projectId",
                        "tableId"
                    ]
                }
            }
        },
        "gcp:bigquery/JobCopySourceTable:JobCopySourceTable": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "tableId": {
                    "type": "string",
                    "description": "The table. Can be specified `{{table_id}}` if \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\" pulumi-lang-hcl=\"`project_id`\"\u003e`projectId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`datasetId`\" pulumi-lang-dotnet=\"`DatasetId`\" pulumi-lang-go=\"`datasetId`\" pulumi-lang-python=\"`dataset_id`\" pulumi-lang-yaml=\"`datasetId`\" pulumi-lang-java=\"`datasetId`\" pulumi-lang-hcl=\"`dataset_id`\"\u003e`datasetId`\u003c/span\u003e are also set,\nor of the form `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}` if not.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "tableId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "datasetId",
                        "projectId",
                        "tableId"
                    ]
                }
            }
        },
        "gcp:bigquery/JobExtract:JobExtract": {
            "properties": {
                "compression": {
                    "type": "string",
                    "description": "The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE.\nThe default value is NONE. DEFLATE and SNAPPY are only supported for Avro.\n",
                    "willReplaceOnChanges": true
                },
                "destinationFormat": {
                    "type": "string",
                    "description": "The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON and AVRO for tables and SAVED_MODEL for models.\nThe default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV.\nThe default value for models is SAVED_MODEL.\n",
                    "willReplaceOnChanges": true
                },
                "destinationUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written.\n",
                    "willReplaceOnChanges": true
                },
                "fieldDelimiter": {
                    "type": "string",
                    "description": "When extracting data in CSV format, this defines the delimiter to use between fields in the exported data.\nDefault is ','\n",
                    "willReplaceOnChanges": true
                },
                "printHeader": {
                    "type": "boolean",
                    "description": "Whether to print out a header row in the results. Default is true.\n",
                    "willReplaceOnChanges": true
                },
                "sourceModel": {
                    "$ref": "#/types/gcp:bigquery/JobExtractSourceModel:JobExtractSourceModel",
                    "description": "A reference to the model being exported.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "sourceTable": {
                    "$ref": "#/types/gcp:bigquery/JobExtractSourceTable:JobExtractSourceTable",
                    "description": "A reference to the table being exported.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "useAvroLogicalTypes": {
                    "type": "boolean",
                    "description": "Whether to use logical types when extracting to AVRO format.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "destinationUris"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destinationFormat",
                        "destinationUris",
                        "fieldDelimiter"
                    ]
                }
            }
        },
        "gcp:bigquery/JobExtractSourceModel:JobExtractSourceModel": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this model.\n",
                    "willReplaceOnChanges": true
                },
                "modelId": {
                    "type": "string",
                    "description": "The ID of the model.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this model.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "modelId",
                "projectId"
            ]
        },
        "gcp:bigquery/JobExtractSourceTable:JobExtractSourceTable": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "tableId": {
                    "type": "string",
                    "description": "The table. Can be specified `{{table_id}}` if \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\" pulumi-lang-hcl=\"`project_id`\"\u003e`projectId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`datasetId`\" pulumi-lang-dotnet=\"`DatasetId`\" pulumi-lang-go=\"`datasetId`\" pulumi-lang-python=\"`dataset_id`\" pulumi-lang-yaml=\"`datasetId`\" pulumi-lang-java=\"`datasetId`\" pulumi-lang-hcl=\"`dataset_id`\"\u003e`datasetId`\u003c/span\u003e are also set,\nor of the form `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}` if not.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "tableId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "datasetId",
                        "projectId",
                        "tableId"
                    ]
                }
            }
        },
        "gcp:bigquery/JobLoad:JobLoad": {
            "properties": {
                "allowJaggedRows": {
                    "type": "boolean",
                    "description": "Accept rows that are missing trailing optional columns. The missing values are treated as nulls.\nIf false, records with missing trailing columns are treated as bad records, and if there are too many bad records,\nan invalid error is returned in the job result. The default value is false. Only applicable to CSV, ignored for other formats.\n",
                    "willReplaceOnChanges": true
                },
                "allowQuotedNewlines": {
                    "type": "boolean",
                    "description": "Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file.\nThe default value is false.\n",
                    "willReplaceOnChanges": true
                },
                "autodetect": {
                    "type": "boolean",
                    "description": "Indicates if we should automatically infer the options and schema for CSV and JSON sources.\n",
                    "willReplaceOnChanges": true
                },
                "createDisposition": {
                    "type": "string",
                    "description": "Specifies whether the job is allowed to create new tables. The following values are supported:\nCREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table.\nCREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result.\nCreation, truncation and append actions occur as one atomic update upon job completion\nDefault value is `CREATE_IF_NEEDED`.\nPossible values are: `CREATE_IF_NEEDED`, `CREATE_NEVER`.\n",
                    "willReplaceOnChanges": true
                },
                "destinationEncryptionConfiguration": {
                    "$ref": "#/types/gcp:bigquery/JobLoadDestinationEncryptionConfiguration:JobLoadDestinationEncryptionConfiguration",
                    "description": "Custom encryption configuration (e.g., Cloud KMS keys)\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "destinationTable": {
                    "$ref": "#/types/gcp:bigquery/JobLoadDestinationTable:JobLoadDestinationTable",
                    "description": "The destination table to load the data into.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "encoding": {
                    "type": "string",
                    "description": "The character encoding of the data. The supported values are UTF-8 or ISO-8859-1.\nThe default value is UTF-8. BigQuery decodes the data after the raw, binary data\nhas been split using the values of the quote and fieldDelimiter properties.\n",
                    "willReplaceOnChanges": true
                },
                "fieldDelimiter": {
                    "type": "string",
                    "description": "The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character.\nTo use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts\nthe string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the\ndata in its raw, binary state. BigQuery also supports the escape sequence \"\\t\" to specify a tab separator.\nThe default value is a comma (',').\n",
                    "willReplaceOnChanges": true
                },
                "ignoreUnknownValues": {
                    "type": "boolean",
                    "description": "Indicates if BigQuery should allow extra values that are not represented in the table schema.\nIf true, the extra values are ignored. If false, records with extra columns are treated as bad records,\nand if there are too many bad records, an invalid error is returned in the job result.\nThe default value is false. The sourceFormat property determines what BigQuery treats as an extra value:\nCSV: Trailing columns\nJSON: Named values that don't match any column names\n",
                    "willReplaceOnChanges": true
                },
                "jsonExtension": {
                    "type": "string",
                    "description": "If sourceFormat is set to newline-delimited JSON, indicates whether it should be processed as a JSON variant such as GeoJSON.\nFor a sourceFormat other than JSON, omit this field. If the sourceFormat is newline-delimited JSON: - for newline-delimited\nGeoJSON: set to GEOJSON.\n",
                    "willReplaceOnChanges": true
                },
                "maxBadRecords": {
                    "type": "integer",
                    "description": "The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value,\nan invalid error is returned in the job result. The default value is 0, which requires that all records are valid.\n",
                    "willReplaceOnChanges": true
                },
                "nullMarker": {
                    "type": "string",
                    "description": "Specifies a string that represents a null value in a CSV file. The default value is the empty string. If you set this\nproperty to a custom value, BigQuery throws an error if an\nempty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as\nan empty value.\n",
                    "willReplaceOnChanges": true
                },
                "parquetOptions": {
                    "$ref": "#/types/gcp:bigquery/JobLoadParquetOptions:JobLoadParquetOptions",
                    "description": "Parquet Options for load and make external tables.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "projectionFields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "If sourceFormat is set to \"DATASTORE_BACKUP\", indicates which entity properties to load into BigQuery from a Cloud Datastore backup.\nProperty names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties.\nIf any named property isn't found in the Cloud Datastore backup, an invalid error is returned in the job result.\n",
                    "willReplaceOnChanges": true
                },
                "quote": {
                    "type": "string",
                    "description": "The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding,\nand then uses the first byte of the encoded string to split the data in its raw, binary state.\nThe default value is a double-quote ('\"'). If your data does not contain quoted sections, set the property value to an empty string.\nIf your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.\n",
                    "willReplaceOnChanges": true
                },
                "schemaUpdateOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows the schema of the destination table to be updated as a side effect of the load job if a schema is autodetected or\nsupplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND;\nwhen writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators.\nFor normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified:\nALLOW_FIELD_ADDITION: allow adding a nullable field to the schema.\nALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.\n",
                    "willReplaceOnChanges": true
                },
                "skipLeadingRows": {
                    "type": "integer",
                    "description": "The number of rows at the top of a CSV file that BigQuery will skip when loading the data.\nThe default value is 0. This property is useful if you have header rows in the file that should be skipped.\nWhen autodetect is on, the behavior is the following:\nskipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected,\nthe row is read as data. Otherwise data is read starting from the second row.\nskipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row.\nskipLeadingRows = N \u003e 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected,\nrow N is just skipped. Otherwise row N is used to extract column names for the detected schema.\n",
                    "willReplaceOnChanges": true
                },
                "sourceFormat": {
                    "type": "string",
                    "description": "The format of the data files. For CSV files, specify \"CSV\". For datastore backups, specify \"DATASTORE_BACKUP\".\nFor newline-delimited JSON, specify \"NEWLINE_DELIMITED_JSON\". For Avro, specify \"AVRO\". For parquet, specify \"PARQUET\".\nFor orc, specify \"ORC\". [Beta] For Bigtable, specify \"BIGTABLE\".\nThe default value is CSV.\n",
                    "willReplaceOnChanges": true
                },
                "sourceUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The fully-qualified URIs that point to your data in Google Cloud.\nFor Google Cloud Storage URIs: Each URI can contain one '\\*' wildcard character\nand it must come after the 'bucket' name. Size limits related to load jobs apply\nto external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be\nspecified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table.\nFor Google Cloud Datastore backups: Exactly one URI can be specified. Also, the '\\*' wildcard character is not allowed.\n",
                    "willReplaceOnChanges": true
                },
                "timePartitioning": {
                    "$ref": "#/types/gcp:bigquery/JobLoadTimePartitioning:JobLoadTimePartitioning",
                    "description": "Time-based partitioning specification for the destination table.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "writeDisposition": {
                    "type": "string",
                    "description": "Specifies the action that occurs if the destination table already exists. The following values are supported:\nWRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result.\nWRITE_APPEND: If the table already exists, BigQuery appends the data to the table.\nWRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result.\nEach action is atomic and only occurs if BigQuery is able to complete the job successfully.\nCreation, truncation and append actions occur as one atomic update upon job completion.\nDefault value is `WRITE_EMPTY`.\nPossible values are: `WRITE_TRUNCATE`, `WRITE_APPEND`, `WRITE_EMPTY`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "destinationTable",
                "sourceUris"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destinationTable",
                        "fieldDelimiter",
                        "quote",
                        "sourceUris"
                    ]
                }
            }
        },
        "gcp:bigquery/JobLoadDestinationEncryptionConfiguration:JobLoadDestinationEncryptionConfiguration": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table.\nThe BigQuery Service Account associated with your project requires access to this encryption key.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyVersion": {
                    "type": "string",
                    "description": "(Output)\nDescribes the Cloud KMS encryption key version used to protect destination BigQuery table.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeyName",
                        "kmsKeyVersion"
                    ]
                }
            }
        },
        "gcp:bigquery/JobLoadDestinationTable:JobLoadDestinationTable": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "tableId": {
                    "type": "string",
                    "description": "The table. Can be specified `{{table_id}}` if \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\" pulumi-lang-hcl=\"`project_id`\"\u003e`projectId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`datasetId`\" pulumi-lang-dotnet=\"`DatasetId`\" pulumi-lang-go=\"`datasetId`\" pulumi-lang-python=\"`dataset_id`\" pulumi-lang-yaml=\"`datasetId`\" pulumi-lang-java=\"`datasetId`\" pulumi-lang-hcl=\"`dataset_id`\"\u003e`datasetId`\u003c/span\u003e are also set,\nor of the form `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}` if not.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "tableId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "datasetId",
                        "projectId",
                        "tableId"
                    ]
                }
            }
        },
        "gcp:bigquery/JobLoadParquetOptions:JobLoadParquetOptions": {
            "properties": {
                "enableListInference": {
                    "type": "boolean",
                    "description": "If sourceFormat is set to PARQUET, indicates whether to use schema inference specifically for Parquet LIST logical type.\n",
                    "willReplaceOnChanges": true
                },
                "enumAsString": {
                    "type": "boolean",
                    "description": "If sourceFormat is set to PARQUET, indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:bigquery/JobLoadTimePartitioning:JobLoadTimePartitioning": {
            "properties": {
                "expirationMs": {
                    "type": "string",
                    "description": "Number of milliseconds for which to keep the storage for a partition. A wrapper is used here because 0 is an invalid value.\n",
                    "willReplaceOnChanges": true
                },
                "field": {
                    "type": "string",
                    "description": "If not set, the table is partitioned by pseudo column '_PARTITIONTIME'; if set, the table is partitioned by this field.\nThe field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.\nA wrapper is used here because an empty string is an invalid value.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The only type supported is DAY, which will generate one partition per day. Providing an empty string used to cause an error,\nbut in OnePlatform the field will be treated as unset.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:bigquery/JobQuery:JobQuery": {
            "properties": {
                "allowLargeResults": {
                    "type": "boolean",
                    "description": "If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance.\nRequires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed.\nHowever, you must still set destinationTable when result size exceeds the allowed maximum response size.\n",
                    "willReplaceOnChanges": true
                },
                "connectionProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/JobQueryConnectionProperty:JobQueryConnectionProperty"
                    },
                    "description": "Connection properties to customize query behavior. Under JDBC, these correspond\ndirectly to connection properties passed to the DriverManager. Under ODBC, these\ncorrespond to properties in the connection string.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "continuous": {
                    "type": "boolean",
                    "description": "(Optional, Beta)\nWhether to run the query as continuous or a regular query.\n",
                    "willReplaceOnChanges": true
                },
                "createDisposition": {
                    "type": "string",
                    "description": "Specifies whether the job is allowed to create new tables. The following values are supported:\nCREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table.\nCREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result.\nCreation, truncation and append actions occur as one atomic update upon job completion\nDefault value is `CREATE_IF_NEEDED`.\nPossible values are: `CREATE_IF_NEEDED`, `CREATE_NEVER`.\n",
                    "willReplaceOnChanges": true
                },
                "defaultDataset": {
                    "$ref": "#/types/gcp:bigquery/JobQueryDefaultDataset:JobQueryDefaultDataset",
                    "description": "Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "destinationEncryptionConfiguration": {
                    "$ref": "#/types/gcp:bigquery/JobQueryDestinationEncryptionConfiguration:JobQueryDestinationEncryptionConfiguration",
                    "description": "Custom encryption configuration (e.g., Cloud KMS keys)\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "destinationTable": {
                    "$ref": "#/types/gcp:bigquery/JobQueryDestinationTable:JobQueryDestinationTable",
                    "description": "Describes the table where the query results should be stored.\nThis property must be set for large results that exceed the maximum response size.\nFor queries that produce anonymous (cached) results, this field will be populated by BigQuery.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "flattenResults": {
                    "type": "boolean",
                    "description": "If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results.\nallowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened.\n",
                    "willReplaceOnChanges": true
                },
                "maximumBillingTier": {
                    "type": "integer",
                    "description": "Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge).\nIf unspecified, this will be set to your project default.\n",
                    "willReplaceOnChanges": true
                },
                "maximumBytesBilled": {
                    "type": "string",
                    "description": "Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge).\nIf unspecified, this will be set to your project default.\n",
                    "willReplaceOnChanges": true
                },
                "parameterMode": {
                    "type": "string",
                    "description": "Standard SQL only. Set to POSITIONAL to use positional (?) query parameters or to NAMED to use named (@myparam) query parameters in this query.\n",
                    "willReplaceOnChanges": true
                },
                "priority": {
                    "type": "string",
                    "description": "Specifies a priority for the query.\nDefault value is `INTERACTIVE`.\nPossible values are: `INTERACTIVE`, `BATCH`.\n",
                    "willReplaceOnChanges": true
                },
                "query": {
                    "type": "string",
                    "description": "SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL.\n*NOTE*: queries containing [DML language](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language)\n(`DELETE`, `UPDATE`, `MERGE`, `INSERT`) must specify \u003cspan pulumi-lang-nodejs=\"`createDisposition \" pulumi-lang-dotnet=\"`CreateDisposition \" pulumi-lang-go=\"`createDisposition \" pulumi-lang-python=\"`create_disposition \" pulumi-lang-yaml=\"`createDisposition \" pulumi-lang-java=\"`createDisposition \" pulumi-lang-hcl=\"`create_disposition \"\u003e`createDisposition \u003c/span\u003e= \"\"` and \u003cspan pulumi-lang-nodejs=\"`writeDisposition \" pulumi-lang-dotnet=\"`WriteDisposition \" pulumi-lang-go=\"`writeDisposition \" pulumi-lang-python=\"`write_disposition \" pulumi-lang-yaml=\"`writeDisposition \" pulumi-lang-java=\"`writeDisposition \" pulumi-lang-hcl=\"`write_disposition \"\u003e`writeDisposition \u003c/span\u003e= \"\"`.\n",
                    "willReplaceOnChanges": true
                },
                "schemaUpdateOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows the schema of the destination table to be updated as a side effect of the query job.\nSchema update options are supported in two cases: when writeDisposition is WRITE_APPEND;\nwhen writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table,\nspecified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema.\nOne or more of the following values are specified:\nALLOW_FIELD_ADDITION: allow adding a nullable field to the schema.\nALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.\n",
                    "willReplaceOnChanges": true
                },
                "scriptOptions": {
                    "$ref": "#/types/gcp:bigquery/JobQueryScriptOptions:JobQueryScriptOptions",
                    "description": "Options controlling the execution of scripts.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "useLegacySql": {
                    "type": "boolean",
                    "description": "Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true.\nIf set to false, the query will use BigQuery's standard SQL.\n",
                    "willReplaceOnChanges": true
                },
                "useQueryCache": {
                    "type": "boolean",
                    "description": "Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever\ntables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified.\nThe default value is true.\n",
                    "willReplaceOnChanges": true
                },
                "userDefinedFunctionResources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/JobQueryUserDefinedFunctionResource:JobQueryUserDefinedFunctionResource"
                    },
                    "description": "Describes user-defined function resources used in the query.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "writeDisposition": {
                    "type": "string",
                    "description": "Specifies the action that occurs if the destination table already exists. The following values are supported:\nWRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result.\nWRITE_APPEND: If the table already exists, BigQuery appends the data to the table.\nWRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result.\nEach action is atomic and only occurs if BigQuery is able to complete the job successfully.\nCreation, truncation and append actions occur as one atomic update upon job completion.\nDefault value is `WRITE_EMPTY`.\nPossible values are: `WRITE_TRUNCATE`, `WRITE_APPEND`, `WRITE_EMPTY`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "query"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destinationTable",
                        "query"
                    ]
                }
            }
        },
        "gcp:bigquery/JobQueryConnectionProperty:JobQueryConnectionProperty": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key of the property to set. Currently supported connection properties:\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "The value of the property to set.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ]
        },
        "gcp:bigquery/JobQueryDefaultDataset:JobQueryDefaultDataset": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The dataset. Can be specified `{{dataset_id}}` if \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\" pulumi-lang-hcl=\"`project_id`\"\u003e`projectId`\u003c/span\u003e is also set,\nor of the form `projects/{{project}}/datasets/{{dataset_id}}` if not.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "datasetId",
                        "projectId"
                    ]
                }
            }
        },
        "gcp:bigquery/JobQueryDestinationEncryptionConfiguration:JobQueryDestinationEncryptionConfiguration": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table.\nThe BigQuery Service Account associated with your project requires access to this encryption key.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyVersion": {
                    "type": "string",
                    "description": "(Output)\nDescribes the Cloud KMS encryption key version used to protect destination BigQuery table.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeyName",
                        "kmsKeyVersion"
                    ]
                }
            }
        },
        "gcp:bigquery/JobQueryDestinationTable:JobQueryDestinationTable": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n",
                    "willReplaceOnChanges": true
                },
                "tableId": {
                    "type": "string",
                    "description": "The table. Can be specified `{{table_id}}` if \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\" pulumi-lang-hcl=\"`project_id`\"\u003e`projectId`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`datasetId`\" pulumi-lang-dotnet=\"`DatasetId`\" pulumi-lang-go=\"`datasetId`\" pulumi-lang-python=\"`dataset_id`\" pulumi-lang-yaml=\"`datasetId`\" pulumi-lang-java=\"`datasetId`\" pulumi-lang-hcl=\"`dataset_id`\"\u003e`datasetId`\u003c/span\u003e are also set,\nor of the form `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}` if not.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "tableId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "datasetId",
                        "projectId",
                        "tableId"
                    ]
                }
            }
        },
        "gcp:bigquery/JobQueryScriptOptions:JobQueryScriptOptions": {
            "properties": {
                "keyResultStatement": {
                    "type": "string",
                    "description": "Determines which statement in the script represents the \"key result\",\nused to populate the schema and query results of the script job.\nPossible values are: `LAST`, `FIRST_SELECT`.\n",
                    "willReplaceOnChanges": true
                },
                "statementByteBudget": {
                    "type": "string",
                    "description": "Limit on the number of bytes billed per statement. Exceeding this budget results in an error.\n",
                    "willReplaceOnChanges": true
                },
                "statementTimeoutMs": {
                    "type": "string",
                    "description": "Timeout period for each statement in a script.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:bigquery/JobQueryUserDefinedFunctionResource:JobQueryUserDefinedFunctionResource": {
            "properties": {
                "inlineCode": {
                    "type": "string",
                    "description": "An inline resource that contains code for a user-defined function (UDF).\nProviding a inline code resource is equivalent to providing a URI for a file containing the same code.\n",
                    "willReplaceOnChanges": true
                },
                "resourceUri": {
                    "type": "string",
                    "description": "A code resource to load from a Google Cloud Storage URI (gs://bucket/path).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:bigquery/JobStatus:JobStatus": {
            "properties": {
                "errorResults": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/JobStatusErrorResult:JobStatusErrorResult"
                    },
                    "description": "(Output)\nFinal error result of the job. If present, indicates that the job has completed and was unsuccessful.\nStructure is documented below.\n"
                },
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/JobStatusError:JobStatusError"
                    },
                    "description": "(Output)\nThe first errors encountered during the running of the job. The final message\nincludes the number of errors that caused the process to stop. Errors here do\nnot necessarily mean that the job has not completed or was unsuccessful.\nStructure is documented below.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nRunning state of the job. Valid states include 'PENDING', 'RUNNING', and 'DONE'.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errorResults",
                        "errors",
                        "state"
                    ]
                }
            }
        },
        "gcp:bigquery/JobStatusError:JobStatusError": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The geographic location of the job. The default value is US.\n"
                },
                "message": {
                    "type": "string",
                    "description": "A human-readable description of the error.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A short error code that summarizes the error.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/JobStatusErrorResult:JobStatusErrorResult": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The geographic location of the job. The default value is US.\n"
                },
                "message": {
                    "type": "string",
                    "description": "A human-readable description of the error.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A short error code that summarizes the error.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/ReservationAutoscale:ReservationAutoscale": {
            "properties": {
                "currentSlots": {
                    "type": "integer",
                    "description": "(Output)\nThe slot capacity added to this reservation when autoscale happens. Will be between [0,\u003cspan pulumi-lang-nodejs=\" maxSlots]\" pulumi-lang-dotnet=\" MaxSlots]\" pulumi-lang-go=\" maxSlots]\" pulumi-lang-python=\" max_slots]\" pulumi-lang-yaml=\" maxSlots]\" pulumi-lang-java=\" maxSlots]\" pulumi-lang-hcl=\" max_slots]\"\u003e maxSlots]\u003c/span\u003e.\n"
                },
                "maxSlots": {
                    "type": "integer",
                    "description": "Number of slots to be scaled when needed.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "currentSlots"
                    ]
                }
            }
        },
        "gcp:bigquery/ReservationReplicationStatus:ReservationReplicationStatus": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/ReservationReplicationStatusError:ReservationReplicationStatusError"
                    },
                    "description": "(Output)\nThe last error encountered while trying to replicate changes from the primary to the\nsecondary. This field is only available if the replication has not succeeded since.\nStructure is documented below.\n"
                },
                "lastErrorTime": {
                    "type": "string",
                    "description": "(Output)\nThe time at which the last error was encountered while trying to replicate changes from\nthe primary to the secondary. This field is only available if the replication has not\nsucceeded since.\n"
                },
                "lastReplicationTime": {
                    "type": "string",
                    "description": "(Output)\nA timestamp corresponding to the last change on the primary that was successfully\nreplicated to the secondary.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors",
                        "lastErrorTime",
                        "lastReplicationTime"
                    ]
                }
            }
        },
        "gcp:bigquery/ReservationReplicationStatusError:ReservationReplicationStatusError": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "(Output)\nThe status code, which should be an enum value of [google.rpc.Code](https://cloud.google.com/bigquery/docs/reference/reservations/rpc/google.rpc#google.rpc.Code).\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nA developer-facing error message, which should be in English.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "code",
                        "message"
                    ]
                }
            }
        },
        "gcp:bigquery/RoutineArgument:RoutineArgument": {
            "properties": {
                "argumentKind": {
                    "type": "string",
                    "description": "Defaults to FIXED_TYPE.\nDefault value is `FIXED_TYPE`.\nPossible values are: `FIXED_TYPE`, `ANY_TYPE`.\n"
                },
                "dataType": {
                    "type": "string",
                    "description": "A JSON schema for the data type. Required unless argumentKind = ANY_TYPE.\n~\u003e**NOTE**: Because this field expects a JSON string, any changes to the string\nwill create a diff, even if the JSON itself hasn't changed. If the API returns\na different value for the same schema, e.g. it switched the order of values\nor replaced STRUCT field type with RECORD field type, we currently cannot\nsuppress the recurring diff this causes. As a workaround, we recommend using\nthe schema as returned by the API.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Specifies whether the argument is input or output. Can be set for procedures only.\nPossible values are: `IN`, `OUT`, `INOUT`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of this argument. Can be absent for function return argument.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/RoutineExternalRuntimeOptions:RoutineExternalRuntimeOptions": {
            "properties": {
                "containerCpu": {
                    "type": "number",
                    "description": "Amount of CPU provisioned for a Python UDF container instance. For more\ninformation, see [Configure container limits for Python\nUDFs](https://cloud.google.com/bigquery/docs/user-defined-functions-python#configure-container-limits)\n"
                },
                "containerMemory": {
                    "type": "string",
                    "description": "Amount of memory provisioned for a Python UDF container instance. Format:\n{number}{unit} where unit is one of \"M\", \"G\", \"Mi\" and \"Gi\" (e.g. 1G,\n512Mi). If not specified, the default value is 512Mi. For more information,\nsee [Configure container limits for Python\nUDFs](https://cloud.google.com/bigquery/docs/user-defined-functions-python#configure-container-limits)\n"
                },
                "maxBatchingRows": {
                    "type": "string",
                    "description": "Maximum number of rows in each batch sent to the external runtime. If\nabsent or if 0, BigQuery dynamically decides the number of rows in a batch.\n"
                },
                "runtimeConnection": {
                    "type": "string",
                    "description": "Fully qualified name of the connection whose service account will be used\nto execute the code in the container. Format:\n`\"projects/{project_id}/locations/{location_id}/connections/{connection_id}\"`\n"
                },
                "runtimeVersion": {
                    "type": "string",
                    "description": "Language runtime version. Example: `python-3.11`.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/RoutineIamBindingCondition:RoutineIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/RoutineIamMemberCondition:RoutineIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquery/RoutinePythonOptions:RoutinePythonOptions": {
            "properties": {
                "entryPoint": {
                    "type": "string",
                    "description": "The name of the function defined in Python code as the entry point when the\nPython UDF is invoked.\n"
                },
                "packages": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of Python package names along with versions to be installed.\nExample: [\"pandas\u003e=2.1\", \"google-cloud-translate==3.11\"]. For more\ninformation, see [Use third-party\npackages](https://cloud.google.com/bigquery/docs/user-defined-functions-python#third-party-packages).\n"
                }
            },
            "type": "object",
            "required": [
                "entryPoint"
            ]
        },
        "gcp:bigquery/RoutineRemoteFunctionOptions:RoutineRemoteFunctionOptions": {
            "properties": {
                "connection": {
                    "type": "string",
                    "description": "Fully qualified name of the user-provided connection object which holds\nthe authentication information to send requests to the remote service.\nFormat: \"projects/{projectId}/locations/{locationId}/connections/{connectionId}\"\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Endpoint of the user-provided remote service, e.g.\n`https://us-east1-my_gcf_project.cloudfunctions.net/remote_add`\n"
                },
                "maxBatchingRows": {
                    "type": "string",
                    "description": "Max number of rows in each batch sent to the remote service. If absent or if 0,\nBigQuery dynamically decides the number of rows in a batch.\n"
                },
                "userDefinedContext": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "User-defined context as a set of key/value pairs, which will be sent as function\ninvocation context together with batched arguments in the requests to the remote\nservice. The total number of bytes of keys and values must be less than 8KB.\nAn object containing a list of \"key\": value pairs. Example:\n`{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "userDefinedContext"
                    ]
                }
            }
        },
        "gcp:bigquery/RoutineSparkOptions:RoutineSparkOptions": {
            "properties": {
                "archiveUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Archive files to be extracted into the working directory of each executor. For more information about Apache Spark, see Apache Spark.\n"
                },
                "connection": {
                    "type": "string",
                    "description": "Fully qualified name of the user-provided Spark connection object.\nFormat: \"projects/{projectId}/locations/{locationId}/connections/{connectionId}\"\n"
                },
                "containerImage": {
                    "type": "string",
                    "description": "Custom container image for the runtime environment.\n"
                },
                "fileUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Files to be placed in the working directory of each executor. For more information about Apache Spark, see Apache Spark.\n"
                },
                "jarUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "JARs to include on the driver and executor CLASSPATH. For more information about Apache Spark, see Apache Spark.\n"
                },
                "mainClass": {
                    "type": "string",
                    "description": "The fully qualified name of a class in jarUris, for example, com.example.wordcount.\nExactly one of mainClass and\u003cspan pulumi-lang-nodejs=\" mainJarUri \" pulumi-lang-dotnet=\" MainJarUri \" pulumi-lang-go=\" mainJarUri \" pulumi-lang-python=\" main_jar_uri \" pulumi-lang-yaml=\" mainJarUri \" pulumi-lang-java=\" mainJarUri \" pulumi-lang-hcl=\" main_jar_uri \"\u003e mainJarUri \u003c/span\u003efield should be set for Java/Scala language type.\n"
                },
                "mainFileUri": {
                    "type": "string",
                    "description": "The main file/jar URI of the Spark application.\nExactly one of the definitionBody field and the mainFileUri field must be set for Python.\nExactly one of mainClass and mainFileUri field should be set for Java/Scala language type.\n"
                },
                "properties": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Configuration properties as a set of key/value pairs, which will be passed on to the Spark application.\nFor more information, see Apache Spark and the procedure option list.\nAn object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n"
                },
                "pyFileUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Python files to be placed on the PYTHONPATH for PySpark application. Supported file types: .py, .egg, and .zip. For more information about Apache Spark, see Apache Spark.\n"
                },
                "runtimeVersion": {
                    "type": "string",
                    "description": "Runtime version. If not specified, the default runtime version is used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "archiveUris",
                        "fileUris",
                        "jarUris",
                        "properties",
                        "pyFileUris"
                    ]
                }
            }
        },
        "gcp:bigquery/TableBiglakeConfiguration:TableBiglakeConfiguration": {
            "properties": {
                "connectionId": {
                    "type": "string",
                    "description": "The connection specifying the credentials to be used to\nread and write to external storage, such as Cloud Storage. The\u003cspan pulumi-lang-nodejs=\" connectionId \" pulumi-lang-dotnet=\" ConnectionId \" pulumi-lang-go=\" connectionId \" pulumi-lang-python=\" connection_id \" pulumi-lang-yaml=\" connectionId \" pulumi-lang-java=\" connectionId \" pulumi-lang-hcl=\" connection_id \"\u003e connectionId \u003c/span\u003ecan\nhave the form \"\u0026lt;project\\_id\u0026gt;.\u0026lt;location\\_id\u0026gt;.\u0026lt;connection\\_id\u0026gt;\" or\nprojects/\u0026lt;project\\_id\u0026gt;/locations/\u0026lt;location\\_id\u0026gt;/connections/\u0026lt;connection\\_id\u0026gt;\".\n",
                    "willReplaceOnChanges": true
                },
                "fileFormat": {
                    "type": "string",
                    "description": "The file format the table data is stored in.\n",
                    "willReplaceOnChanges": true
                },
                "storageUri": {
                    "type": "string",
                    "description": "The fully qualified location prefix of the external folder where table data\nis stored. The '*' wildcard character is not allowed. The URI should be in the format \"gs://bucket/path_to_table/\"\n",
                    "willReplaceOnChanges": true
                },
                "tableFormat": {
                    "type": "string",
                    "description": "The table format the metadata only snapshots are stored in.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "connectionId",
                "fileFormat",
                "storageUri",
                "tableFormat"
            ]
        },
        "gcp:bigquery/TableEncryptionConfiguration:TableEncryptionConfiguration": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The self link or full name of a key which should be used to\nencrypt this table.  Note that the default bigquery service account will need to have\nencrypt/decrypt permissions on this key - you may want to see the\n\u003cspan pulumi-lang-nodejs=\"`gcp.bigquery.getDefaultServiceAccount`\" pulumi-lang-dotnet=\"`gcp.bigquery.getDefaultServiceAccount`\" pulumi-lang-go=\"`bigquery.getDefaultServiceAccount`\" pulumi-lang-python=\"`bigquery_get_default_service_account`\" pulumi-lang-yaml=\"`gcp.bigquery.getDefaultServiceAccount`\" pulumi-lang-java=\"`gcp.bigquery.getDefaultServiceAccount`\" pulumi-lang-hcl=\"`data.google_bigquery_default_service_account`\"\u003e`gcp.bigquery.getDefaultServiceAccount`\u003c/span\u003e datasource and the\n\u003cspan pulumi-lang-nodejs=\"`gcp.kms.CryptoKeyIAMBinding`\" pulumi-lang-dotnet=\"`gcp.kms.CryptoKeyIAMBinding`\" pulumi-lang-go=\"`kms.CryptoKeyIAMBinding`\" pulumi-lang-python=\"`kms.CryptoKeyIAMBinding`\" pulumi-lang-yaml=\"`gcp.kms.CryptoKeyIAMBinding`\" pulumi-lang-java=\"`gcp.kms.CryptoKeyIAMBinding`\" pulumi-lang-hcl=\"`google_kms_crypto_key_iam_binding`\"\u003e`gcp.kms.CryptoKeyIAMBinding`\u003c/span\u003e resource.\n"
                },
                "kmsKeyVersion": {
                    "type": "string",
                    "description": "The self link or full name of the kms key version used to encrypt this table.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeyName",
                        "kmsKeyVersion"
                    ]
                }
            }
        },
        "gcp:bigquery/TableExternalCatalogTableOptions:TableExternalCatalogTableOptions": {
            "properties": {
                "connectionId": {
                    "type": "string",
                    "description": "The connection specifying the credentials to be\nused to read external storage, such as Azure Blob, Cloud Storage, or S3. The\nconnection is needed to read the open source table from BigQuery Engine. The\u003cspan pulumi-lang-nodejs=\"\nconnectionId \" pulumi-lang-dotnet=\"\nConnectionId \" pulumi-lang-go=\"\nconnectionId \" pulumi-lang-python=\"\nconnection_id \" pulumi-lang-yaml=\"\nconnectionId \" pulumi-lang-java=\"\nconnectionId \" pulumi-lang-hcl=\"\nconnection_id \"\u003e\nconnectionId \u003c/span\u003ecan have the form `\u003cproject_id\u003e.\u003clocation_id\u003e.\u003cconnection_id\u003e`\nor `projects/\u003cproject_id\u003e/locations/\u003clocation_id\u003e/connections/\u003cconnection_id\u003e`.\n"
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of key value pairs defining the parameters and\nproperties of the open source table. Corresponds with hive meta store table\nparameters. Maximum size of 4Mib.\n"
                },
                "storageDescriptor": {
                    "$ref": "#/types/gcp:bigquery/TableExternalCatalogTableOptionsStorageDescriptor:TableExternalCatalogTableOptionsStorageDescriptor",
                    "description": "A storage descriptor containing information\nabout the physical storage of this table. Structure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableExternalCatalogTableOptionsStorageDescriptor:TableExternalCatalogTableOptionsStorageDescriptor": {
            "properties": {
                "inputFormat": {
                    "type": "string",
                    "description": "Specifies the fully qualified class name of the\nInputFormat (e.g. \"org.apache.hadoop.hive.ql.io.orc.OrcInputFormat\"). The\nmaximum length is 128 characters.\n"
                },
                "locationUri": {
                    "type": "string",
                    "description": "The physical location of the table (e.g.\n'gs://spark-dataproc-data/pangea-data/case_sensitive/' or\n'gs://spark-dataproc-data/pangea-data/*'). The maximum length is 2056 bytes.\n"
                },
                "outputFormat": {
                    "type": "string",
                    "description": "Specifies the fully qualified class name of the\nOutputFormat (e.g. \"org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat\"). The\nmaximum length is 128 characters.\n"
                },
                "serdeInfo": {
                    "$ref": "#/types/gcp:bigquery/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo:TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo",
                    "description": "Serializer and deserializer information. Structure\nis documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo:TableExternalCatalogTableOptionsStorageDescriptorSerdeInfo": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the SerDe. The maximum length is 256 characters.\n"
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value pairs that define the initialization\nparameters for the serialization library. Maximum size 10 Kib.\n"
                },
                "serializationLibrary": {
                    "type": "string",
                    "description": "Specifies a fully-qualified class name of\nthe serialization library that is responsible for the translation of data\nbetween table representation and the underlying low-level input and output\nformat structures. The maximum length is 256 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "serializationLibrary"
            ]
        },
        "gcp:bigquery/TableExternalDataConfiguration:TableExternalDataConfiguration": {
            "properties": {
                "autodetect": {
                    "type": "boolean",
                    "description": "Let BigQuery try to autodetect the schema\nand format of the table.\n"
                },
                "avroOptions": {
                    "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationAvroOptions:TableExternalDataConfigurationAvroOptions",
                    "description": "Additional options if \u003cspan pulumi-lang-nodejs=\"`sourceFormat`\" pulumi-lang-dotnet=\"`SourceFormat`\" pulumi-lang-go=\"`sourceFormat`\" pulumi-lang-python=\"`source_format`\" pulumi-lang-yaml=\"`sourceFormat`\" pulumi-lang-java=\"`sourceFormat`\" pulumi-lang-hcl=\"`source_format`\"\u003e`sourceFormat`\u003c/span\u003e is set to\n\"AVRO\".  Structure is documented below.\n"
                },
                "bigtableOptions": {
                    "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationBigtableOptions:TableExternalDataConfigurationBigtableOptions",
                    "description": "Additional properties to set if\n\u003cspan pulumi-lang-nodejs=\"`sourceFormat`\" pulumi-lang-dotnet=\"`SourceFormat`\" pulumi-lang-go=\"`sourceFormat`\" pulumi-lang-python=\"`source_format`\" pulumi-lang-yaml=\"`sourceFormat`\" pulumi-lang-java=\"`sourceFormat`\" pulumi-lang-hcl=\"`source_format`\"\u003e`sourceFormat`\u003c/span\u003e is set to \"BIGTABLE\". Structure is documented below.\n"
                },
                "compression": {
                    "type": "string",
                    "description": "The compression type of the data source.\nValid values are \"NONE\" or \"GZIP\".\n"
                },
                "connectionId": {
                    "type": "string",
                    "description": "The connection specifying the credentials to be used to read\nexternal storage, such as Azure Blob, Cloud Storage, or S3. The \u003cspan pulumi-lang-nodejs=\"`connectionId`\" pulumi-lang-dotnet=\"`ConnectionId`\" pulumi-lang-go=\"`connectionId`\" pulumi-lang-python=\"`connection_id`\" pulumi-lang-yaml=\"`connectionId`\" pulumi-lang-java=\"`connectionId`\" pulumi-lang-hcl=\"`connection_id`\"\u003e`connectionId`\u003c/span\u003e can have\nthe form `{{project}}.{{location}}.{{connection_id}}`\nor `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`.\n\n~\u003e**NOTE:** If you set `external_data_configuration.connection_id`, the\ntable schema must be specified using the top-level \u003cspan pulumi-lang-nodejs=\"`schema`\" pulumi-lang-dotnet=\"`Schema`\" pulumi-lang-go=\"`schema`\" pulumi-lang-python=\"`schema`\" pulumi-lang-yaml=\"`schema`\" pulumi-lang-java=\"`schema`\" pulumi-lang-hcl=\"`schema`\"\u003e`schema`\u003c/span\u003e field\ndocumented above.\n"
                },
                "csvOptions": {
                    "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationCsvOptions:TableExternalDataConfigurationCsvOptions",
                    "description": "Additional properties to set if\n\u003cspan pulumi-lang-nodejs=\"`sourceFormat`\" pulumi-lang-dotnet=\"`SourceFormat`\" pulumi-lang-go=\"`sourceFormat`\" pulumi-lang-python=\"`source_format`\" pulumi-lang-yaml=\"`sourceFormat`\" pulumi-lang-java=\"`sourceFormat`\" pulumi-lang-hcl=\"`source_format`\"\u003e`sourceFormat`\u003c/span\u003e is set to \"CSV\". Structure is documented below.\n"
                },
                "decimalTargetTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Defines the list of possible SQL data types to which the source decimal values are converted. This list and the precision and the scale parameters of the decimal field determine the target type. In the order of NUMERIC, BIGNUMERIC, and STRING, a type is picked if it is in the specified list and if it supports the precision and the scale. STRING supports all precision and scale values. If none of the listed types supports the precision and the scale, the type supporting the widest range in the specified list is picked, and if a value exceeds the supported range when reading the data, an error will be thrown.\n\nExample: Suppose the value of this field is [\"NUMERIC\", \"BIGNUMERIC\"]. If (precision,scale) is:\n\n(38,9) \u003e NUMERIC;\n(39,9) \u003e BIGNUMERIC (NUMERIC cannot hold 30 integer digits);\n(38,10) \u003e BIGNUMERIC (NUMERIC cannot hold 10 fractional digits);\n(76,38) \u003e BIGNUMERIC;\n(77,38) \u003e BIGNUMERIC (error if value exceeds supported range).\n\nThis field cannot contain duplicate types. The order of the types in this field is ignored. For example, [\"BIGNUMERIC\", \"NUMERIC\"] is the same as [\"NUMERIC\", \"BIGNUMERIC\"] and NUMERIC always takes precedence over BIGNUMERIC.\n\nDefaults to [\"NUMERIC\", \"STRING\"] for ORC and [\"NUMERIC\"] for the other file formats.\n"
                },
                "fileSetSpecType": {
                    "type": "string",
                    "description": "Specifies how source URIs are interpreted for constructing the file set to load.\nBy default source URIs are expanded against the underlying storage.\nOther options include specifying manifest files. Only applicable to object storage systems. Docs\n"
                },
                "googleSheetsOptions": {
                    "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationGoogleSheetsOptions:TableExternalDataConfigurationGoogleSheetsOptions",
                    "description": "Additional options if\n\u003cspan pulumi-lang-nodejs=\"`sourceFormat`\" pulumi-lang-dotnet=\"`SourceFormat`\" pulumi-lang-go=\"`sourceFormat`\" pulumi-lang-python=\"`source_format`\" pulumi-lang-yaml=\"`sourceFormat`\" pulumi-lang-java=\"`sourceFormat`\" pulumi-lang-hcl=\"`source_format`\"\u003e`sourceFormat`\u003c/span\u003e is set to \"GOOGLE_SHEETS\". Structure is\ndocumented below.\n"
                },
                "hivePartitioningOptions": {
                    "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationHivePartitioningOptions:TableExternalDataConfigurationHivePartitioningOptions",
                    "description": "When set, configures hive partitioning\nsupport. Not all storage formats support hive partitioning -- requesting hive\npartitioning on an unsupported format will lead to an error, as will providing\nan invalid specification. Structure is documented below.\n"
                },
                "ignoreUnknownValues": {
                    "type": "boolean",
                    "description": "Indicates if BigQuery should\nallow extra values that are not represented in the table schema.\nIf true, the extra values are ignored. If false, records with\nextra columns are treated as bad records, and if there are too\nmany bad records, an invalid error is returned in the job result.\nThe default value is false.\n"
                },
                "jsonExtension": {
                    "type": "string",
                    "description": "Used to indicate that a JSON variant, rather than normal JSON, is being used as the sourceFormat. This should only be used in combination with the `JSON` source format. Valid values are: `GEOJSON`.\n"
                },
                "jsonOptions": {
                    "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationJsonOptions:TableExternalDataConfigurationJsonOptions",
                    "description": "Additional properties to set if\n\u003cspan pulumi-lang-nodejs=\"`sourceFormat`\" pulumi-lang-dotnet=\"`SourceFormat`\" pulumi-lang-go=\"`sourceFormat`\" pulumi-lang-python=\"`source_format`\" pulumi-lang-yaml=\"`sourceFormat`\" pulumi-lang-java=\"`sourceFormat`\" pulumi-lang-hcl=\"`source_format`\"\u003e`sourceFormat`\u003c/span\u003e is set to \"JSON\". Structure is documented below.\n"
                },
                "maxBadRecords": {
                    "type": "integer",
                    "description": "The maximum number of bad records that\nBigQuery can ignore when reading data.\n"
                },
                "metadataCacheMode": {
                    "type": "string",
                    "description": "Metadata Cache Mode for the table. Set this to enable caching of metadata from external data source. Valid values are `AUTOMATIC` and `MANUAL`.\n"
                },
                "objectMetadata": {
                    "type": "string",
                    "description": "Object Metadata is used to create Object Tables. Object Tables contain a listing of objects (with their metadata) found at the sourceUris. If \u003cspan pulumi-lang-nodejs=\"`objectMetadata`\" pulumi-lang-dotnet=\"`ObjectMetadata`\" pulumi-lang-go=\"`objectMetadata`\" pulumi-lang-python=\"`object_metadata`\" pulumi-lang-yaml=\"`objectMetadata`\" pulumi-lang-java=\"`objectMetadata`\" pulumi-lang-hcl=\"`object_metadata`\"\u003e`objectMetadata`\u003c/span\u003e is set, \u003cspan pulumi-lang-nodejs=\"`sourceFormat`\" pulumi-lang-dotnet=\"`SourceFormat`\" pulumi-lang-go=\"`sourceFormat`\" pulumi-lang-python=\"`source_format`\" pulumi-lang-yaml=\"`sourceFormat`\" pulumi-lang-java=\"`sourceFormat`\" pulumi-lang-hcl=\"`source_format`\"\u003e`sourceFormat`\u003c/span\u003e should be omitted.\n"
                },
                "parquetOptions": {
                    "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationParquetOptions:TableExternalDataConfigurationParquetOptions",
                    "description": "Additional properties to set if\n\u003cspan pulumi-lang-nodejs=\"`sourceFormat`\" pulumi-lang-dotnet=\"`SourceFormat`\" pulumi-lang-go=\"`sourceFormat`\" pulumi-lang-python=\"`source_format`\" pulumi-lang-yaml=\"`sourceFormat`\" pulumi-lang-java=\"`sourceFormat`\" pulumi-lang-hcl=\"`source_format`\"\u003e`sourceFormat`\u003c/span\u003e is set to \"PARQUET\". Structure is documented below.\n"
                },
                "referenceFileSchemaUri": {
                    "type": "string",
                    "description": "When creating an external table, the user can provide a reference file with the table schema. This is enabled for the following formats: AVRO, PARQUET, ORC.\n"
                },
                "schema": {
                    "type": "string",
                    "description": "A JSON schema for the external table. Schema is required\nfor CSV and JSON formats if autodetect is not on. Schema is disallowed\nfor Google Cloud Bigtable, Cloud Datastore backups, Avro, Iceberg, ORC and Parquet formats.\n~\u003e**NOTE:** Because this field expects a JSON string, any changes to the\nstring will create a diff, even if the JSON itself hasn't changed.\nFurthermore drift for this field cannot not be detected because BigQuery\nonly uses this schema to compute the effective schema for the table, therefore\nany changes on the configured value will force the table to be recreated.\nThis schema is effectively only applied when creating a table from an external\ndatasource, after creation the computed schema will be stored in\n`google_bigquery_table.schema`\n\n~\u003e**NOTE:** If you set `external_data_configuration.connection_id`, the\ntable schema must be specified using the top-level \u003cspan pulumi-lang-nodejs=\"`schema`\" pulumi-lang-dotnet=\"`Schema`\" pulumi-lang-go=\"`schema`\" pulumi-lang-python=\"`schema`\" pulumi-lang-yaml=\"`schema`\" pulumi-lang-java=\"`schema`\" pulumi-lang-hcl=\"`schema`\"\u003e`schema`\u003c/span\u003e field\ndocumented above.\n",
                    "willReplaceOnChanges": true
                },
                "sourceFormat": {
                    "type": "string",
                    "description": "The data format. Please see sourceFormat under\n[ExternalDataConfiguration](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#externaldataconfiguration)\nin Bigquery's public API documentation for supported formats. To use \"GOOGLE_SHEETS\"\nthe \u003cspan pulumi-lang-nodejs=\"`scopes`\" pulumi-lang-dotnet=\"`Scopes`\" pulumi-lang-go=\"`scopes`\" pulumi-lang-python=\"`scopes`\" pulumi-lang-yaml=\"`scopes`\" pulumi-lang-java=\"`scopes`\" pulumi-lang-hcl=\"`scopes`\"\u003e`scopes`\u003c/span\u003e must include \"https://www.googleapis.com/auth/drive.readonly\".\n"
                },
                "sourceUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the fully-qualified URIs that point to\nyour data in Google Cloud.\n"
                }
            },
            "type": "object",
            "required": [
                "autodetect",
                "sourceUris"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "autodetect",
                        "schema",
                        "sourceUris"
                    ]
                }
            }
        },
        "gcp:bigquery/TableExternalDataConfigurationAvroOptions:TableExternalDataConfigurationAvroOptions": {
            "properties": {
                "useAvroLogicalTypes": {
                    "type": "boolean",
                    "description": "If is set to true, indicates whether\nto interpret logical types as the corresponding BigQuery data type\n(for example, TIMESTAMP), instead of using the raw type (for example, INTEGER).\n"
                }
            },
            "type": "object",
            "required": [
                "useAvroLogicalTypes"
            ]
        },
        "gcp:bigquery/TableExternalDataConfigurationBigtableOptions:TableExternalDataConfigurationBigtableOptions": {
            "properties": {
                "columnFamilies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationBigtableOptionsColumnFamily:TableExternalDataConfigurationBigtableOptionsColumnFamily"
                    },
                    "description": "A list of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the 'type' field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.  Structure is documented below.\n"
                },
                "ignoreUnspecifiedColumnFamilies": {
                    "type": "boolean",
                    "description": "If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.\n"
                },
                "outputColumnFamiliesAsJson": {
                    "type": "boolean",
                    "description": "If field is true, then each column family will be read as a single JSON column. Otherwise they are read as a repeated cell structure containing timestamp/value tuples. The default value is false.\n"
                },
                "readRowkeyAsString": {
                    "type": "boolean",
                    "description": "If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableExternalDataConfigurationBigtableOptionsColumnFamily:TableExternalDataConfigurationBigtableOptionsColumnFamily": {
            "properties": {
                "columns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/TableExternalDataConfigurationBigtableOptionsColumnFamilyColumn:TableExternalDataConfigurationBigtableOptionsColumnFamilyColumn"
                    },
                    "description": "A List of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as Other columns can be accessed as a list through column field.  Structure is documented below.\n"
                },
                "encoding": {
                    "type": "string",
                    "description": "The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in 'columns' and specifying an encoding for it.\n"
                },
                "familyId": {
                    "type": "string",
                    "description": "Identifier of the column family.\n"
                },
                "onlyReadLatest": {
                    "type": "boolean",
                    "description": "If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in 'columns' and specifying a different setting for that column.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive): \"BYTES\", \"STRING\", \"INTEGER\", \"FLOAT\", \"BOOLEAN\", \"JSON\". Default type is BYTES. This can be overridden for a specific column by listing that column in 'columns' and specifying a type for it.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableExternalDataConfigurationBigtableOptionsColumnFamilyColumn:TableExternalDataConfigurationBigtableOptionsColumnFamilyColumn": {
            "properties": {
                "encoding": {
                    "type": "string",
                    "description": "The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. 'encoding' can also be set at the column family level. However, the setting at this level takes precedence if 'encoding' is set at both levels.\n"
                },
                "fieldName": {
                    "type": "string",
                    "description": "If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.\n"
                },
                "onlyReadLatest": {
                    "type": "boolean",
                    "description": "If this is set, only the latest version of value in this column are exposed. 'onlyReadLatest' can also be set at the column family level. However, the setting at this level takes precedence if 'onlyReadLatest' is set at both levels.\n"
                },
                "qualifierEncoded": {
                    "type": "string",
                    "description": "Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifierString field. Otherwise, a base-64 encoded value must be set to qualifierEncoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as fieldName.\n"
                },
                "qualifierString": {
                    "type": "string",
                    "description": "Qualifier string.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive): \"BYTES\", \"STRING\", \"INTEGER\", \"FLOAT\", \"BOOLEAN\", \"JSON\", Default type is \"BYTES\". 'type' can also be set at the column family level. However, the setting at this level takes precedence if 'type' is set at both levels.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableExternalDataConfigurationCsvOptions:TableExternalDataConfigurationCsvOptions": {
            "properties": {
                "allowJaggedRows": {
                    "type": "boolean",
                    "description": "Indicates if BigQuery should accept rows\nthat are missing trailing optional columns.\n"
                },
                "allowQuotedNewlines": {
                    "type": "boolean",
                    "description": "Indicates if BigQuery should allow\nquoted data sections that contain newline characters in a CSV file.\nThe default value is false.\n"
                },
                "encoding": {
                    "type": "string",
                    "description": "The character encoding of the data. The supported\nvalues are UTF-8 or ISO-8859-1.\n"
                },
                "fieldDelimiter": {
                    "type": "string",
                    "description": "The separator for fields in a CSV file.\n"
                },
                "quote": {
                    "type": "string",
                    "description": "The value that is used to quote data sections in a\nCSV file. If your data does not contain quoted sections, set the\nproperty value to an empty string. If your data contains quoted newline\ncharacters, you must also set the \u003cspan pulumi-lang-nodejs=\"`allowQuotedNewlines`\" pulumi-lang-dotnet=\"`AllowQuotedNewlines`\" pulumi-lang-go=\"`allowQuotedNewlines`\" pulumi-lang-python=\"`allow_quoted_newlines`\" pulumi-lang-yaml=\"`allowQuotedNewlines`\" pulumi-lang-java=\"`allowQuotedNewlines`\" pulumi-lang-hcl=\"`allow_quoted_newlines`\"\u003e`allowQuotedNewlines`\u003c/span\u003e property to true.\nThe API-side default is `\"`, specified in the provider escaped as `\\\"`. Due to\nlimitations with default values, this value is required to be\nexplicitly set.\n"
                },
                "skipLeadingRows": {
                    "type": "integer",
                    "description": "The number of rows at the top of a CSV\nfile that BigQuery will skip when reading the data.\n"
                },
                "sourceColumnMatch": {
                    "type": "string",
                    "description": "Specifies how source columns are matched\nto the table schema. Valid values are `POSITION` (columns matched by position,\nassuming same ordering as the schema) or `NAME` (columns matched by name,\nreads the header row and reorders columns to align with schema field names).\nIf not set, a default is chosen based on how the schema is provided: when\nautodetect is used, columns are matched by name; otherwise, by position.\n"
                }
            },
            "type": "object",
            "required": [
                "quote"
            ]
        },
        "gcp:bigquery/TableExternalDataConfigurationGoogleSheetsOptions:TableExternalDataConfigurationGoogleSheetsOptions": {
            "properties": {
                "range": {
                    "type": "string",
                    "description": "Range of a sheet to query from. Only used when\nnon-empty. At least one of \u003cspan pulumi-lang-nodejs=\"`range`\" pulumi-lang-dotnet=\"`Range`\" pulumi-lang-go=\"`range`\" pulumi-lang-python=\"`range`\" pulumi-lang-yaml=\"`range`\" pulumi-lang-java=\"`range`\" pulumi-lang-hcl=\"`range`\"\u003e`range`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`skipLeadingRows`\" pulumi-lang-dotnet=\"`SkipLeadingRows`\" pulumi-lang-go=\"`skipLeadingRows`\" pulumi-lang-python=\"`skip_leading_rows`\" pulumi-lang-yaml=\"`skipLeadingRows`\" pulumi-lang-java=\"`skipLeadingRows`\" pulumi-lang-hcl=\"`skip_leading_rows`\"\u003e`skipLeadingRows`\u003c/span\u003e must be set.\nTypical format: \"sheet_name!top_left_cell_id:bottom_right_cell_id\"\nFor example: \"sheet1!A1:B20\"\n"
                },
                "skipLeadingRows": {
                    "type": "integer",
                    "description": "The number of rows at the top of the sheet\nthat BigQuery will skip when reading the data. At least one of \u003cspan pulumi-lang-nodejs=\"`range`\" pulumi-lang-dotnet=\"`Range`\" pulumi-lang-go=\"`range`\" pulumi-lang-python=\"`range`\" pulumi-lang-yaml=\"`range`\" pulumi-lang-java=\"`range`\" pulumi-lang-hcl=\"`range`\"\u003e`range`\u003c/span\u003e or\n\u003cspan pulumi-lang-nodejs=\"`skipLeadingRows`\" pulumi-lang-dotnet=\"`SkipLeadingRows`\" pulumi-lang-go=\"`skipLeadingRows`\" pulumi-lang-python=\"`skip_leading_rows`\" pulumi-lang-yaml=\"`skipLeadingRows`\" pulumi-lang-java=\"`skipLeadingRows`\" pulumi-lang-hcl=\"`skip_leading_rows`\"\u003e`skipLeadingRows`\u003c/span\u003e must be set.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableExternalDataConfigurationHivePartitioningOptions:TableExternalDataConfigurationHivePartitioningOptions": {
            "properties": {
                "mode": {
                    "type": "string",
                    "description": "When set, what mode of hive partitioning to use when\nreading data. The following modes are supported.\n* AUTO: automatically infer partition key name(s) and type(s).\n* STRINGS: automatically infer partition key name(s). All types are\nNot all storage formats support hive partitioning. Requesting hive\npartitioning on an unsupported format will lead to an error.\nCurrently supported formats are: JSON, CSV, ORC, Avro and Parquet.\n* CUSTOM: when set to `CUSTOM`, you must encode the partition key schema within the \u003cspan pulumi-lang-nodejs=\"`sourceUriPrefix`\" pulumi-lang-dotnet=\"`SourceUriPrefix`\" pulumi-lang-go=\"`sourceUriPrefix`\" pulumi-lang-python=\"`source_uri_prefix`\" pulumi-lang-yaml=\"`sourceUriPrefix`\" pulumi-lang-java=\"`sourceUriPrefix`\" pulumi-lang-hcl=\"`source_uri_prefix`\"\u003e`sourceUriPrefix`\u003c/span\u003e by setting \u003cspan pulumi-lang-nodejs=\"`sourceUriPrefix`\" pulumi-lang-dotnet=\"`SourceUriPrefix`\" pulumi-lang-go=\"`sourceUriPrefix`\" pulumi-lang-python=\"`source_uri_prefix`\" pulumi-lang-yaml=\"`sourceUriPrefix`\" pulumi-lang-java=\"`sourceUriPrefix`\" pulumi-lang-hcl=\"`source_uri_prefix`\"\u003e`sourceUriPrefix`\u003c/span\u003e to `gs://bucket/path_to_table/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}`.\n"
                },
                "requirePartitionFilter": {
                    "type": "boolean",
                    "description": "If set to true, queries over this table\nrequire a partition filter that can be used for partition elimination to be\nspecified.\n"
                },
                "sourceUriPrefix": {
                    "type": "string",
                    "description": "When hive partition detection is requested,\na common for all source uris must be required. The prefix must end immediately\nbefore the partition key encoding begins. For example, consider files following\nthis data layout. `gs://bucket/path_to_table/dt=2019-06-01/country=USA/id=7/file.avro`\n`gs://bucket/path_to_table/dt=2019-05-31/country=CA/id=3/file.avro` When hive\npartitioning is requested with either AUTO or STRINGS detection, the common prefix\ncan be either of `gs://bucket/path_to_table` or `gs://bucket/path_to_table/`.\nNote that when \u003cspan pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\" pulumi-lang-hcl=\"`mode`\"\u003e`mode`\u003c/span\u003e is set to `CUSTOM`, you must encode the partition key schema within the \u003cspan pulumi-lang-nodejs=\"`sourceUriPrefix`\" pulumi-lang-dotnet=\"`SourceUriPrefix`\" pulumi-lang-go=\"`sourceUriPrefix`\" pulumi-lang-python=\"`source_uri_prefix`\" pulumi-lang-yaml=\"`sourceUriPrefix`\" pulumi-lang-java=\"`sourceUriPrefix`\" pulumi-lang-hcl=\"`source_uri_prefix`\"\u003e`sourceUriPrefix`\u003c/span\u003e by setting \u003cspan pulumi-lang-nodejs=\"`sourceUriPrefix`\" pulumi-lang-dotnet=\"`SourceUriPrefix`\" pulumi-lang-go=\"`sourceUriPrefix`\" pulumi-lang-python=\"`source_uri_prefix`\" pulumi-lang-yaml=\"`sourceUriPrefix`\" pulumi-lang-java=\"`sourceUriPrefix`\" pulumi-lang-hcl=\"`source_uri_prefix`\"\u003e`sourceUriPrefix`\u003c/span\u003e to `gs://bucket/path_to_table/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}`.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableExternalDataConfigurationJsonOptions:TableExternalDataConfigurationJsonOptions": {
            "properties": {
                "encoding": {
                    "type": "string",
                    "description": "The character encoding of the data. The supported values are UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE. The default value is UTF-8.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableExternalDataConfigurationParquetOptions:TableExternalDataConfigurationParquetOptions": {
            "properties": {
                "enableListInference": {
                    "type": "boolean",
                    "description": "Indicates whether to use schema inference specifically for Parquet LIST logical type.\n"
                },
                "enumAsString": {
                    "type": "boolean",
                    "description": "Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableMaterializedView:TableMaterializedView": {
            "properties": {
                "allowNonIncrementalDefinition": {
                    "type": "boolean",
                    "description": "Allow non incremental materialized view definition.\nThe default value is false.\n",
                    "willReplaceOnChanges": true
                },
                "enableRefresh": {
                    "type": "boolean",
                    "description": "Specifies whether to use BigQuery's automatic refresh for this materialized view when the base table is updated.\nThe default value is true.\n"
                },
                "query": {
                    "type": "string",
                    "description": "A query whose result is persisted.\n",
                    "willReplaceOnChanges": true
                },
                "refreshIntervalMs": {
                    "type": "integer",
                    "description": "The maximum frequency at which this materialized view will be refreshed.\nThe default value is 1800000\n"
                }
            },
            "type": "object",
            "required": [
                "query"
            ]
        },
        "gcp:bigquery/TableRangePartitioning:TableRangePartitioning": {
            "properties": {
                "field": {
                    "type": "string",
                    "description": "The field used to determine how to create a range-based\npartition.\n",
                    "willReplaceOnChanges": true
                },
                "range": {
                    "$ref": "#/types/gcp:bigquery/TableRangePartitioningRange:TableRangePartitioningRange",
                    "description": "Information required to partition based on ranges.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "field",
                "range"
            ]
        },
        "gcp:bigquery/TableRangePartitioningRange:TableRangePartitioningRange": {
            "properties": {
                "end": {
                    "type": "integer",
                    "description": "End of the range partitioning, exclusive.\n"
                },
                "interval": {
                    "type": "integer",
                    "description": "The width of each range within the partition.\n"
                },
                "start": {
                    "type": "integer",
                    "description": "Start of the range partitioning, inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "end",
                "interval",
                "start"
            ]
        },
        "gcp:bigquery/TableSchemaForeignTypeInfo:TableSchemaForeignTypeInfo": {
            "properties": {
                "typeSystem": {
                    "type": "string",
                    "description": "Specifies the system which defines the foreign data\ntype.\n"
                }
            },
            "type": "object",
            "required": [
                "typeSystem"
            ]
        },
        "gcp:bigquery/TableTableConstraints:TableTableConstraints": {
            "properties": {
                "foreignKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/TableTableConstraintsForeignKey:TableTableConstraintsForeignKey"
                    },
                    "description": "Present only if the table has a foreign key.\nThe foreign key is not enforced.\nStructure is documented below.\n"
                },
                "primaryKey": {
                    "$ref": "#/types/gcp:bigquery/TableTableConstraintsPrimaryKey:TableTableConstraintsPrimaryKey",
                    "description": "Represents the primary key constraint\non a table's columns. Present only if the table has a primary key.\nThe primary key is not enforced.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquery/TableTableConstraintsForeignKey:TableTableConstraintsForeignKey": {
            "properties": {
                "columnReferences": {
                    "$ref": "#/types/gcp:bigquery/TableTableConstraintsForeignKeyColumnReferences:TableTableConstraintsForeignKeyColumnReferences",
                    "description": "The pair of the foreign key column and primary key column.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Set only if the foreign key constraint is named.\n"
                },
                "referencedTable": {
                    "$ref": "#/types/gcp:bigquery/TableTableConstraintsForeignKeyReferencedTable:TableTableConstraintsForeignKeyReferencedTable",
                    "description": "The table that holds the primary key\nand is referenced by this foreign key.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "columnReferences",
                "referencedTable"
            ]
        },
        "gcp:bigquery/TableTableConstraintsForeignKeyColumnReferences:TableTableConstraintsForeignKeyColumnReferences": {
            "properties": {
                "referencedColumn": {
                    "type": "string",
                    "description": "The column in the primary key that are\nreferenced by the referencingColumn\n"
                },
                "referencingColumn": {
                    "type": "string",
                    "description": "The column that composes the foreign key.\n"
                }
            },
            "type": "object",
            "required": [
                "referencedColumn",
                "referencingColumn"
            ]
        },
        "gcp:bigquery/TableTableConstraintsForeignKeyReferencedTable:TableTableConstraintsForeignKeyReferencedTable": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The ID of the dataset containing this table.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n"
                },
                "tableId": {
                    "type": "string",
                    "description": "The ID of the table. The ID must contain only\nletters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum\nlength is 1,024 characters. Certain operations allow suffixing of\nthe table ID with a partition decorator, such as\nsample_table$20190123.\n"
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId",
                "tableId"
            ]
        },
        "gcp:bigquery/TableTableConstraintsPrimaryKey:TableTableConstraintsPrimaryKey": {
            "properties": {
                "columns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The columns that are composed of the primary key constraint.\n"
                }
            },
            "type": "object",
            "required": [
                "columns"
            ]
        },
        "gcp:bigquery/TableTableReplicationInfo:TableTableReplicationInfo": {
            "properties": {
                "replicationIntervalMs": {
                    "type": "integer",
                    "description": "The interval at which the source\nmaterialized view is polled for updates. The default is 300000.\n",
                    "willReplaceOnChanges": true
                },
                "sourceDatasetId": {
                    "type": "string",
                    "description": "The ID of the source dataset.\n",
                    "willReplaceOnChanges": true
                },
                "sourceProjectId": {
                    "type": "string",
                    "description": "The ID of the source project.\n",
                    "willReplaceOnChanges": true
                },
                "sourceTableId": {
                    "type": "string",
                    "description": "The ID of the source materialized view.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "sourceDatasetId",
                "sourceProjectId",
                "sourceTableId"
            ]
        },
        "gcp:bigquery/TableTimePartitioning:TableTimePartitioning": {
            "properties": {
                "expirationMs": {
                    "type": "integer",
                    "description": "Number of milliseconds for which to keep the\nstorage for a partition.\n"
                },
                "field": {
                    "type": "string",
                    "description": "The field used to determine how to create a time-based\npartition. If time-based partitioning is enabled without this value, the\ntable is partitioned based on the load time.\n",
                    "willReplaceOnChanges": true
                },
                "requirePartitionFilter": {
                    "type": "boolean",
                    "description": "If set to true, queries over this table\nrequire a partition filter that can be used for partition elimination to be\nspecified. \u003cspan pulumi-lang-nodejs=\"`requirePartitionFilter`\" pulumi-lang-dotnet=\"`RequirePartitionFilter`\" pulumi-lang-go=\"`requirePartitionFilter`\" pulumi-lang-python=\"`require_partition_filter`\" pulumi-lang-yaml=\"`requirePartitionFilter`\" pulumi-lang-java=\"`requirePartitionFilter`\" pulumi-lang-hcl=\"`require_partition_filter`\"\u003e`requirePartitionFilter`\u003c/span\u003e is deprecated and will be removed in\na future major release. Use the top level field with the same name instead.\n",
                    "deprecationMessage": "This field is deprecated and will be removed in a future major release; please use the top level field with the same name instead."
                },
                "type": {
                    "type": "string",
                    "description": "The supported types are DAY, HOUR, MONTH, and YEAR,\nwhich will generate one partition per day, hour, month, and year, respectively.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "expirationMs",
                        "type"
                    ]
                }
            }
        },
        "gcp:bigquery/TableView:TableView": {
            "properties": {
                "query": {
                    "type": "string",
                    "description": "A query that BigQuery executes when the view is referenced.\n"
                },
                "useLegacySql": {
                    "type": "boolean",
                    "description": "Specifies whether to use BigQuery's legacy SQL for this view.\nIf set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e, the view will use BigQuery's standard SQL. If set to\n\u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e, the view will use BigQuery's legacy SQL. If unset, the API will\ninterpret it as a \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e and assumes the legacy SQL dialect for its query\naccording to the [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#ViewDefinition).\n\u003e **Note**: Starting in provider version `7.0.0`, no default value is\nprovided for this field unless explicitly set in the configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "query"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "query",
                        "useLegacySql"
                    ]
                }
            }
        },
        "gcp:bigquery/getDatasetAccess:getDatasetAccess": {
            "properties": {
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getDatasetAccessCondition:getDatasetAccessCondition"
                    },
                    "description": "Condition for the binding. If CEL expression in this field is true, this\naccess binding will be considered.\n"
                },
                "datasets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getDatasetAccessDataset:getDatasetAccessDataset"
                    },
                    "description": "Grants all resources of particular types in a particular dataset read access to the current dataset.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "A domain to grant access to. Any users signed in with the\ndomain specified will be granted the specified access\n"
                },
                "groupByEmail": {
                    "type": "string",
                    "description": "An email address of a Google Group to grant access to.\n"
                },
                "iamMember": {
                    "type": "string",
                    "description": "Some other type of member that appears in the IAM Policy but isn't a user,\ngroup, domain, or special group. For example: 'allUsers'\n"
                },
                "role": {
                    "type": "string",
                    "description": "Describes the rights granted to the user specified by the other\nmember of the access object. Basic, predefined, and custom roles\nare supported. Predefined roles that have equivalent basic roles\nare swapped by the API to their basic counterparts. See\n[official docs](https://cloud.google.com/bigquery/docs/access-control).\n"
                },
                "routines": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getDatasetAccessRoutine:getDatasetAccessRoutine"
                    },
                    "description": "A routine from a different dataset to grant access to. Queries\nexecuted against that routine will have read access to tables in\nthis dataset. The role field is not required when this field is\nset. If that routine is updated by any user, access to the routine\nneeds to be granted again via an update operation.\n"
                },
                "specialGroup": {
                    "type": "string",
                    "description": "A special group to grant access to. Possible values include:\n* 'projectOwners': Owners of the enclosing project.\n* 'projectReaders': Readers of the enclosing project.\n* 'projectWriters': Writers of the enclosing project.\n* 'allAuthenticatedUsers': All authenticated BigQuery users.\n"
                },
                "userByEmail": {
                    "type": "string",
                    "description": "An email address of a user to grant access to. For example:\nfred@example.com\n"
                },
                "views": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getDatasetAccessView:getDatasetAccessView"
                    },
                    "description": "A view from a different dataset to grant access to. Queries\nexecuted against that view will have read access to tables in\nthis dataset. The role field is not required when this field is\nset. If that view is updated by any user, access to the view\nneeds to be granted again via an update operation.\n"
                }
            },
            "type": "object",
            "required": [
                "conditions",
                "datasets",
                "domain",
                "groupByEmail",
                "iamMember",
                "role",
                "routines",
                "specialGroup",
                "userByEmail",
                "views"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetAccessCondition:getDatasetAccessCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file\nname and a position in the file.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "expression",
                "location",
                "title"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetAccessDataset:getDatasetAccessDataset": {
            "properties": {
                "datasets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getDatasetAccessDatasetDataset:getDatasetAccessDatasetDataset"
                    },
                    "description": "The dataset this entry applies to\n"
                },
                "targetTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Which resources in the dataset this entry applies to. Currently, only views are supported,\nbut additional target types may be added in the future. Possible values: VIEWS\n"
                }
            },
            "type": "object",
            "required": [
                "datasets",
                "targetTypes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetAccessDatasetDataset:getDatasetAccessDatasetDataset": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The dataset ID.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n"
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetAccessRoutine:getDatasetAccessRoutine": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The dataset ID.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n"
                },
                "routineId": {
                    "type": "string",
                    "description": "The ID of the routine. The ID must contain only letters (a-z,\nA-Z), numbers (0-9), or underscores (_). The maximum length\nis 256 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId",
                "routineId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetAccessView:getDatasetAccessView": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The dataset ID.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n"
                },
                "tableId": {
                    "type": "string",
                    "description": "The ID of the table. The ID must contain only letters (a-z,\nA-Z), numbers (0-9), or underscores (_). The maximum length\nis 1,024 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId",
                "tableId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetDefaultEncryptionConfiguration:getDatasetDefaultEncryptionConfiguration": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Describes the Cloud KMS encryption key that will be used to protect destination\nBigQuery table. The BigQuery Service Account associated with your project requires\naccess to this encryption key.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetExternalCatalogDatasetOption:getDatasetExternalCatalogDatasetOption": {
            "properties": {
                "defaultStorageLocationUri": {
                    "type": "string",
                    "description": "The storage location URI for all tables in the dataset. Equivalent to hive metastore's\ndatabase locationUri. Maximum length of 1024 characters.\n"
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of key value pairs defining the parameters and properties of the open source schema.\nMaximum size of 2Mib.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultStorageLocationUri",
                "parameters"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetExternalDatasetReference:getDatasetExternalDatasetReference": {
            "properties": {
                "connection": {
                    "type": "string",
                    "description": "The connection id that is used to access the externalSource.\nFormat: projects/{projectId}/locations/{locationId}/connections/{connectionId}\n"
                },
                "externalSource": {
                    "type": "string",
                    "description": "External source that backs this dataset.\n"
                }
            },
            "type": "object",
            "required": [
                "connection",
                "externalSource"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getDatasetsDataset:getDatasetsDataset": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The id of the dataset.\n"
                },
                "friendlyName": {
                    "type": "string",
                    "description": "The friendly name of the dataset.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "User-provided dataset labels, in key/value pairs.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The geographic location of the dataset.\n"
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "friendlyName",
                "labels",
                "location"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableBiglakeConfiguration:getTableBiglakeConfiguration": {
            "properties": {
                "connectionId": {
                    "type": "string",
                    "description": "The connection specifying the credentials to be used to read and write to external storage, such as Cloud Storage. The\u003cspan pulumi-lang-nodejs=\" connectionId \" pulumi-lang-dotnet=\" ConnectionId \" pulumi-lang-go=\" connectionId \" pulumi-lang-python=\" connection_id \" pulumi-lang-yaml=\" connectionId \" pulumi-lang-java=\" connectionId \" pulumi-lang-hcl=\" connection_id \"\u003e connectionId \u003c/span\u003ecan have the form \"\u0026lt;project\\_id\u0026gt;.\u0026lt;location\\_id\u0026gt;.\u0026lt;connection\\_id\u0026gt;\" or \"projects/\u0026lt;project\\_id\u0026gt;/locations/\u0026lt;location\\_id\u0026gt;/connections/\u0026lt;connection\\_id\u0026gt;\".\n"
                },
                "fileFormat": {
                    "type": "string",
                    "description": "The file format the data is stored in.\n"
                },
                "storageUri": {
                    "type": "string",
                    "description": "The fully qualified location prefix of the external folder where table data is stored. The '*' wildcard character is not allowed. The URI should be in the format \"gs://bucket/path_to_table/\"\n"
                },
                "tableFormat": {
                    "type": "string",
                    "description": "The table format the metadata only snapshots are stored in.\n"
                }
            },
            "type": "object",
            "required": [
                "connectionId",
                "fileFormat",
                "storageUri",
                "tableFormat"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableEncryptionConfiguration:getTableEncryptionConfiguration": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The self link or full name of a key which should be used to encrypt this table. Note that the default bigquery service account will need to have encrypt/decrypt permissions on this key - you may want to see the\u003cspan pulumi-lang-nodejs=\" gcp.bigquery.getDefaultServiceAccount \" pulumi-lang-dotnet=\" gcp.bigquery.getDefaultServiceAccount \" pulumi-lang-go=\" bigquery.getDefaultServiceAccount \" pulumi-lang-python=\" bigquery_get_default_service_account \" pulumi-lang-yaml=\" gcp.bigquery.getDefaultServiceAccount \" pulumi-lang-java=\" gcp.bigquery.getDefaultServiceAccount \" pulumi-lang-hcl=\" data.google_bigquery_default_service_account \"\u003e gcp.bigquery.getDefaultServiceAccount \u003c/span\u003edatasource and the\u003cspan pulumi-lang-nodejs=\" gcp.kms.CryptoKeyIAMBinding \" pulumi-lang-dotnet=\" gcp.kms.CryptoKeyIAMBinding \" pulumi-lang-go=\" kms.CryptoKeyIAMBinding \" pulumi-lang-python=\" kms.CryptoKeyIAMBinding \" pulumi-lang-yaml=\" gcp.kms.CryptoKeyIAMBinding \" pulumi-lang-java=\" gcp.kms.CryptoKeyIAMBinding \" pulumi-lang-hcl=\" google_kms_crypto_key_iam_binding \"\u003e gcp.kms.CryptoKeyIAMBinding \u003c/span\u003eresource.\n"
                },
                "kmsKeyVersion": {
                    "type": "string",
                    "description": "The self link or full name of the kms key version used to encrypt this table.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName",
                "kmsKeyVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalCatalogTableOption:getTableExternalCatalogTableOption": {
            "properties": {
                "connectionId": {
                    "type": "string",
                    "description": "The connection specifying the credentials to be used to read external storage, such as Azure Blob, Cloud Storage, or S3. The connection is needed to read the open source table from BigQuery Engine. The\u003cspan pulumi-lang-nodejs=\" connectionId \" pulumi-lang-dotnet=\" ConnectionId \" pulumi-lang-go=\" connectionId \" pulumi-lang-python=\" connection_id \" pulumi-lang-yaml=\" connectionId \" pulumi-lang-java=\" connectionId \" pulumi-lang-hcl=\" connection_id \"\u003e connectionId \u003c/span\u003ecan have the form \u003cproject_id\u003e.\u003clocation_id\u003e.\u003cconnection_id\u003e or projects/\u003cproject_id\u003e/locations/\u003clocation_id\u003e/connections/\u003cconnection_id\u003e.\n"
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of key value pairs defining the parameters and properties of the open source table. Corresponds with hive meta store table parameters. Maximum size of 4Mib.\n"
                },
                "storageDescriptors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalCatalogTableOptionStorageDescriptor:getTableExternalCatalogTableOptionStorageDescriptor"
                    },
                    "description": "A storage descriptor containing information about the physical storage of this table.\n"
                }
            },
            "type": "object",
            "required": [
                "connectionId",
                "parameters",
                "storageDescriptors"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalCatalogTableOptionStorageDescriptor:getTableExternalCatalogTableOptionStorageDescriptor": {
            "properties": {
                "inputFormat": {
                    "type": "string",
                    "description": "Specifies the fully qualified class name of the InputFormat (e.g. \"org.apache.hadoop.hive.ql.io.orc.OrcInputFormat\"). The maximum length is 128 characters.\n"
                },
                "locationUri": {
                    "type": "string",
                    "description": "The physical location of the table (e.g. 'gs://spark-dataproc-data/pangea-data/case_sensitive/' or 'gs://spark-dataproc-data/pangea-data/*'). The maximum length is 2056 bytes.\n"
                },
                "outputFormat": {
                    "type": "string",
                    "description": "Specifies the fully qualified class name of the OutputFormat (e.g. \"org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat\"). The maximum length is 128 characters.\n"
                },
                "serdeInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalCatalogTableOptionStorageDescriptorSerdeInfo:getTableExternalCatalogTableOptionStorageDescriptorSerdeInfo"
                    },
                    "description": "Serializer and deserializer information.\n"
                }
            },
            "type": "object",
            "required": [
                "inputFormat",
                "locationUri",
                "outputFormat",
                "serdeInfos"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalCatalogTableOptionStorageDescriptorSerdeInfo:getTableExternalCatalogTableOptionStorageDescriptorSerdeInfo": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the SerDe. The maximum length is 256 characters.\n"
                },
                "parameters": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Key-value pairs that define the initialization parameters for the serialization library. Maximum size 10 Kib.\n"
                },
                "serializationLibrary": {
                    "type": "string",
                    "description": "Specifies a fully-qualified class name of the serialization library that is responsible for the translation of data between table representation and the underlying low-level input and output format structures. The maximum length is 256 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "parameters",
                "serializationLibrary"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfiguration:getTableExternalDataConfiguration": {
            "properties": {
                "autodetect": {
                    "type": "boolean",
                    "description": "Let BigQuery try to autodetect the schema and format of the table.\n"
                },
                "avroOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationAvroOption:getTableExternalDataConfigurationAvroOption"
                    },
                    "description": "Additional options if\u003cspan pulumi-lang-nodejs=\" sourceFormat \" pulumi-lang-dotnet=\" SourceFormat \" pulumi-lang-go=\" sourceFormat \" pulumi-lang-python=\" source_format \" pulumi-lang-yaml=\" sourceFormat \" pulumi-lang-java=\" sourceFormat \" pulumi-lang-hcl=\" source_format \"\u003e sourceFormat \u003c/span\u003eis set to \"AVRO\"\n"
                },
                "bigtableOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationBigtableOption:getTableExternalDataConfigurationBigtableOption"
                    },
                    "description": "Additional options if sourceFormat is set to BIGTABLE.\n"
                },
                "compression": {
                    "type": "string",
                    "description": "The compression type of the data source. Valid values are \"NONE\" or \"GZIP\".\n"
                },
                "connectionId": {
                    "type": "string",
                    "description": "The connection specifying the credentials to be used to read external storage, such as Azure Blob, Cloud Storage, or S3. The connectionId can have the form \"\u003cproject\u003e.\u003clocation\u003e.\u003cconnection_id\u003e\" or \"projects/\u003cproject\u003e/locations/\u003clocation\u003e/connections/\u003cconnection_id\u003e\".\n"
                },
                "csvOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationCsvOption:getTableExternalDataConfigurationCsvOption"
                    },
                    "description": "Additional properties to set if\u003cspan pulumi-lang-nodejs=\" sourceFormat \" pulumi-lang-dotnet=\" SourceFormat \" pulumi-lang-go=\" sourceFormat \" pulumi-lang-python=\" source_format \" pulumi-lang-yaml=\" sourceFormat \" pulumi-lang-java=\" sourceFormat \" pulumi-lang-hcl=\" source_format \"\u003e sourceFormat \u003c/span\u003eis set to \"CSV\".\n"
                },
                "decimalTargetTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The data types that could be used as a target type when converting decimal values.\n"
                },
                "fileSetSpecType": {
                    "type": "string",
                    "description": "Specifies how source URIs are interpreted for constructing the file set to load.  By default source URIs are expanded against the underlying storage.  Other options include specifying manifest files. Only applicable to object storage systems.\n"
                },
                "googleSheetsOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationGoogleSheetsOption:getTableExternalDataConfigurationGoogleSheetsOption"
                    },
                    "description": "Additional options if\u003cspan pulumi-lang-nodejs=\" sourceFormat \" pulumi-lang-dotnet=\" SourceFormat \" pulumi-lang-go=\" sourceFormat \" pulumi-lang-python=\" source_format \" pulumi-lang-yaml=\" sourceFormat \" pulumi-lang-java=\" sourceFormat \" pulumi-lang-hcl=\" source_format \"\u003e sourceFormat \u003c/span\u003eis set to \"GOOGLE_SHEETS\".\n"
                },
                "hivePartitioningOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationHivePartitioningOption:getTableExternalDataConfigurationHivePartitioningOption"
                    },
                    "description": "When set, configures hive partitioning support. Not all storage formats support hive partitioning -- requesting hive partitioning on an unsupported format will lead to an error, as will providing an invalid specification.\n"
                },
                "ignoreUnknownValues": {
                    "type": "boolean",
                    "description": "Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.\n"
                },
                "jsonExtension": {
                    "type": "string",
                    "description": "Load option to be used together with sourceFormat newline-delimited JSON to indicate that a variant of JSON is being loaded. To load newline-delimited GeoJSON, specify GEOJSON (and sourceFormat must be set to NEWLINE_DELIMITED_JSON).\n"
                },
                "jsonOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationJsonOption:getTableExternalDataConfigurationJsonOption"
                    },
                    "description": "Additional properties to set if sourceFormat is set to JSON.\n"
                },
                "maxBadRecords": {
                    "type": "integer",
                    "description": "The maximum number of bad records that BigQuery can ignore when reading data.\n"
                },
                "metadataCacheMode": {
                    "type": "string",
                    "description": "Metadata Cache Mode for the table. Set this to enable caching of metadata from external data source.\n"
                },
                "objectMetadata": {
                    "type": "string",
                    "description": "Object Metadata is used to create Object Tables. Object Tables contain a listing of objects (with their metadata) found at the sourceUris. If ObjectMetadata is set, sourceFormat should be omitted.\n"
                },
                "parquetOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationParquetOption:getTableExternalDataConfigurationParquetOption"
                    },
                    "description": "Additional properties to set if sourceFormat is set to PARQUET.\n"
                },
                "referenceFileSchemaUri": {
                    "type": "string",
                    "description": "When creating an external table, the user can provide a reference file with the table schema. This is enabled for the following formats: AVRO, PARQUET, ORC.\n"
                },
                "schema": {
                    "type": "string",
                    "description": "A JSON schema for the external table. Schema is required for CSV and JSON formats and is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats when using external tables.\n"
                },
                "sourceFormat": {
                    "type": "string",
                    "description": "Please see sourceFormat under ExternalDataConfiguration in Bigquery's public API documentation (https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#externaldataconfiguration) for supported formats. To use \"GOOGLE_SHEETS\" the scopes must include \"googleapis.com/auth/drive.readonly\".\n"
                },
                "sourceUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the fully-qualified URIs that point to your data in Google Cloud.\n"
                }
            },
            "type": "object",
            "required": [
                "autodetect",
                "avroOptions",
                "bigtableOptions",
                "compression",
                "connectionId",
                "csvOptions",
                "decimalTargetTypes",
                "fileSetSpecType",
                "googleSheetsOptions",
                "hivePartitioningOptions",
                "ignoreUnknownValues",
                "jsonExtension",
                "jsonOptions",
                "maxBadRecords",
                "metadataCacheMode",
                "objectMetadata",
                "parquetOptions",
                "referenceFileSchemaUri",
                "schema",
                "sourceFormat",
                "sourceUris"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationAvroOption:getTableExternalDataConfigurationAvroOption": {
            "properties": {
                "useAvroLogicalTypes": {
                    "type": "boolean",
                    "description": "If sourceFormat is set to \"AVRO\", indicates whether to interpret logical types as the corresponding BigQuery data type (for example, TIMESTAMP), instead of using the raw type (for example, INTEGER).\n"
                }
            },
            "type": "object",
            "required": [
                "useAvroLogicalTypes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationBigtableOption:getTableExternalDataConfigurationBigtableOption": {
            "properties": {
                "columnFamilies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationBigtableOptionColumnFamily:getTableExternalDataConfigurationBigtableOptionColumnFamily"
                    },
                    "description": "A list of column families to expose in the table schema along with their types. This list restricts the column families that can be referenced in queries and specifies their value types. You can use this list to do type conversions - see the 'type' field for more details. If you leave this list empty, all column families are present in the table schema and their values are read as BYTES. During a query only the column families referenced in that query are read from Bigtable.\n"
                },
                "ignoreUnspecifiedColumnFamilies": {
                    "type": "boolean",
                    "description": "If field is true, then the column families that are not specified in columnFamilies list are not exposed in the table schema. Otherwise, they are read with BYTES type values. The default value is false.\n"
                },
                "outputColumnFamiliesAsJson": {
                    "type": "boolean",
                    "description": "If field is true, then each column family will be read as a single JSON column. Otherwise they are read as a repeated cell structure containing timestamp/value tuples. The default value is false.\n"
                },
                "readRowkeyAsString": {
                    "type": "boolean",
                    "description": "If field is true, then the rowkey column families will be read and converted to string. Otherwise they are read with BYTES type values and users need to manually cast them with CAST if necessary. The default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "columnFamilies",
                "ignoreUnspecifiedColumnFamilies",
                "outputColumnFamiliesAsJson",
                "readRowkeyAsString"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationBigtableOptionColumnFamily:getTableExternalDataConfigurationBigtableOptionColumnFamily": {
            "properties": {
                "columns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableExternalDataConfigurationBigtableOptionColumnFamilyColumn:getTableExternalDataConfigurationBigtableOptionColumnFamilyColumn"
                    },
                    "description": "A List of columns that should be exposed as individual fields as opposed to a list of (column name, value) pairs. All columns whose qualifier matches a qualifier in this list can be accessed as Other columns can be accessed as a list through column field\n"
                },
                "encoding": {
                    "type": "string",
                    "description": "The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. This can be overridden for a specific column by listing that column in 'columns' and specifying an encoding for it.\n"
                },
                "familyId": {
                    "type": "string",
                    "description": "Identifier of the column family.\n"
                },
                "onlyReadLatest": {
                    "type": "boolean",
                    "description": "If this is set only the latest version of value are exposed for all columns in this column family. This can be overridden for a specific column by listing that column in 'columns' and specifying a different setting for that column.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type to convert the value in cells of this column family. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive): \"BYTES\", \"STRING\", \"INTEGER\", \"FLOAT\", \"BOOLEAN\", \"JSON\". Default type is BYTES. This can be overridden for a specific column by listing that column in 'columns' and specifying a type for it.\n"
                }
            },
            "type": "object",
            "required": [
                "columns",
                "encoding",
                "familyId",
                "onlyReadLatest",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationBigtableOptionColumnFamilyColumn:getTableExternalDataConfigurationBigtableOptionColumnFamilyColumn": {
            "properties": {
                "encoding": {
                    "type": "string",
                    "description": "The encoding of the values when the type is not STRING. Acceptable encoding values are: TEXT - indicates values are alphanumeric text strings. BINARY - indicates values are encoded using HBase Bytes.toBytes family of functions. 'encoding' can also be set at the column family level. However, the setting at this level takes precedence if 'encoding' is set at both levels.\n"
                },
                "fieldName": {
                    "type": "string",
                    "description": "If the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as the column field name and is used as field name in queries.\n"
                },
                "onlyReadLatest": {
                    "type": "boolean",
                    "description": "If this is set, only the latest version of value in this column are exposed. 'onlyReadLatest' can also be set at the column family level. However, the setting at this level takes precedence if 'onlyReadLatest' is set at both levels.\n"
                },
                "qualifierEncoded": {
                    "type": "string",
                    "description": "Qualifier of the column. Columns in the parent column family that has this exact qualifier are exposed as . field. If the qualifier is valid UTF-8 string, it can be specified in the qualifierString field. Otherwise, a base-64 encoded value must be set to qualifierEncoded. The column field name is the same as the column qualifier. However, if the qualifier is not a valid BigQuery field identifier i.e. does not match [a-zA-Z][a-zA-Z0-9_]*, a valid identifier must be provided as fieldName.\n"
                },
                "qualifierString": {
                    "type": "string",
                    "description": "Qualifier string.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type to convert the value in cells of this column. The values are expected to be encoded using HBase Bytes.toBytes function when using the BINARY encoding value. Following BigQuery types are allowed (case-sensitive): \"BYTES\", \"STRING\", \"INTEGER\", \"FLOAT\", \"BOOLEAN\", \"JSON\", Default type is \"BYTES\". 'type' can also be set at the column family level. However, the setting at this level takes precedence if 'type' is set at both levels.\n"
                }
            },
            "type": "object",
            "required": [
                "encoding",
                "fieldName",
                "onlyReadLatest",
                "qualifierEncoded",
                "qualifierString",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationCsvOption:getTableExternalDataConfigurationCsvOption": {
            "properties": {
                "allowJaggedRows": {
                    "type": "boolean",
                    "description": "Indicates if BigQuery should accept rows that are missing trailing optional columns.\n"
                },
                "allowQuotedNewlines": {
                    "type": "boolean",
                    "description": "Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.\n"
                },
                "encoding": {
                    "type": "string",
                    "description": "The character encoding of the data. The supported values are UTF-8 or ISO-8859-1.\n"
                },
                "fieldDelimiter": {
                    "type": "string",
                    "description": "The separator for fields in a CSV file.\n"
                },
                "quote": {
                    "type": "string",
                    "description": "The value that is used to quote data sections in a CSV file. If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the\u003cspan pulumi-lang-nodejs=\" allowQuotedNewlines \" pulumi-lang-dotnet=\" AllowQuotedNewlines \" pulumi-lang-go=\" allowQuotedNewlines \" pulumi-lang-python=\" allow_quoted_newlines \" pulumi-lang-yaml=\" allowQuotedNewlines \" pulumi-lang-java=\" allowQuotedNewlines \" pulumi-lang-hcl=\" allow_quoted_newlines \"\u003e allowQuotedNewlines \u003c/span\u003eproperty to true. The API-side default is \", specified in Terraform escaped as \\\". Due to limitations with Terraform default values, this value is required to be explicitly set.\n"
                },
                "skipLeadingRows": {
                    "type": "integer",
                    "description": "The number of rows at the top of a CSV file that BigQuery will skip when reading the data.\n"
                },
                "sourceColumnMatch": {
                    "type": "string",
                    "description": "Specifies how source columns are matched to the table schema. Valid values are POSITION (columns matched by position, assuming same ordering) or NAME (columns matched by name, reads header row and reorders columns to align with schema field names).\n"
                }
            },
            "type": "object",
            "required": [
                "allowJaggedRows",
                "allowQuotedNewlines",
                "encoding",
                "fieldDelimiter",
                "quote",
                "skipLeadingRows",
                "sourceColumnMatch"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationGoogleSheetsOption:getTableExternalDataConfigurationGoogleSheetsOption": {
            "properties": {
                "range": {
                    "type": "string",
                    "description": "Range of a sheet to query from. Only used when non-empty. At least one of range or\u003cspan pulumi-lang-nodejs=\" skipLeadingRows \" pulumi-lang-dotnet=\" SkipLeadingRows \" pulumi-lang-go=\" skipLeadingRows \" pulumi-lang-python=\" skip_leading_rows \" pulumi-lang-yaml=\" skipLeadingRows \" pulumi-lang-java=\" skipLeadingRows \" pulumi-lang-hcl=\" skip_leading_rows \"\u003e skipLeadingRows \u003c/span\u003emust be set. Typical format: \"sheet_name!top_left_cell_id:bottom_right_cell_id\" For example: \"sheet1!A1:B20\n"
                },
                "skipLeadingRows": {
                    "type": "integer",
                    "description": "The number of rows at the top of the sheet that BigQuery will skip when reading the data. At least one of range or\u003cspan pulumi-lang-nodejs=\" skipLeadingRows \" pulumi-lang-dotnet=\" SkipLeadingRows \" pulumi-lang-go=\" skipLeadingRows \" pulumi-lang-python=\" skip_leading_rows \" pulumi-lang-yaml=\" skipLeadingRows \" pulumi-lang-java=\" skipLeadingRows \" pulumi-lang-hcl=\" skip_leading_rows \"\u003e skipLeadingRows \u003c/span\u003emust be set.\n"
                }
            },
            "type": "object",
            "required": [
                "range",
                "skipLeadingRows"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationHivePartitioningOption:getTableExternalDataConfigurationHivePartitioningOption": {
            "properties": {
                "mode": {
                    "type": "string",
                    "description": "When set, what mode of hive partitioning to use when reading data.\n"
                },
                "requirePartitionFilter": {
                    "type": "boolean",
                    "description": "If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.\n"
                },
                "sourceUriPrefix": {
                    "type": "string",
                    "description": "When hive partition detection is requested, a common for all source uris must be required. The prefix must end immediately before the partition key encoding begins.\n"
                }
            },
            "type": "object",
            "required": [
                "mode",
                "requirePartitionFilter",
                "sourceUriPrefix"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationJsonOption:getTableExternalDataConfigurationJsonOption": {
            "properties": {
                "encoding": {
                    "type": "string",
                    "description": "The character encoding of the data. The supported values are UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE. The default value is UTF-8.\n"
                }
            },
            "type": "object",
            "required": [
                "encoding"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableExternalDataConfigurationParquetOption:getTableExternalDataConfigurationParquetOption": {
            "properties": {
                "enableListInference": {
                    "type": "boolean",
                    "description": "Indicates whether to use schema inference specifically for Parquet LIST logical type.\n"
                },
                "enumAsString": {
                    "type": "boolean",
                    "description": "Indicates whether to infer Parquet ENUM logical type as STRING instead of BYTES by default.\n"
                }
            },
            "type": "object",
            "required": [
                "enableListInference",
                "enumAsString"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableMaterializedView:getTableMaterializedView": {
            "properties": {
                "allowNonIncrementalDefinition": {
                    "type": "boolean",
                    "description": "Allow non incremental materialized view definition. The default value is false.\n"
                },
                "enableRefresh": {
                    "type": "boolean",
                    "description": "Specifies if BigQuery should automatically refresh materialized view when the base table is updated. The default is true.\n"
                },
                "query": {
                    "type": "string",
                    "description": "A query whose result is persisted.\n"
                },
                "refreshIntervalMs": {
                    "type": "integer",
                    "description": "Specifies maximum frequency at which this materialized view will be refreshed. The default is 1800000.\n"
                }
            },
            "type": "object",
            "required": [
                "allowNonIncrementalDefinition",
                "enableRefresh",
                "query",
                "refreshIntervalMs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableRangePartitioning:getTableRangePartitioning": {
            "properties": {
                "field": {
                    "type": "string",
                    "description": "The field used to determine how to create a range-based partition.\n"
                },
                "ranges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableRangePartitioningRange:getTableRangePartitioningRange"
                    },
                    "description": "Information required to partition based on ranges. Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "field",
                "ranges"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableRangePartitioningRange:getTableRangePartitioningRange": {
            "properties": {
                "end": {
                    "type": "integer",
                    "description": "End of the range partitioning, exclusive.\n"
                },
                "interval": {
                    "type": "integer",
                    "description": "The width of each range within the partition.\n"
                },
                "start": {
                    "type": "integer",
                    "description": "Start of the range partitioning, inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "end",
                "interval",
                "start"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableSchemaForeignTypeInfo:getTableSchemaForeignTypeInfo": {
            "properties": {
                "typeSystem": {
                    "type": "string",
                    "description": "Specifies the system which defines the foreign data type.\n"
                }
            },
            "type": "object",
            "required": [
                "typeSystem"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableTableConstraint:getTableTableConstraint": {
            "properties": {
                "foreignKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableTableConstraintForeignKey:getTableTableConstraintForeignKey"
                    },
                    "description": "Present only if the table has a foreign key. The foreign key is not enforced.\n"
                },
                "primaryKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableTableConstraintPrimaryKey:getTableTableConstraintPrimaryKey"
                    },
                    "description": "Represents a primary key constraint on a table's columns. Present only if the table has a primary key. The primary key is not enforced.\n"
                }
            },
            "type": "object",
            "required": [
                "foreignKeys",
                "primaryKeys"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableTableConstraintForeignKey:getTableTableConstraintForeignKey": {
            "properties": {
                "columnReferences": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableTableConstraintForeignKeyColumnReference:getTableTableConstraintForeignKeyColumnReference"
                    },
                    "description": "The pair of the foreign key column and primary key column.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Set only if the foreign key constraint is named.\n"
                },
                "referencedTables": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigquery/getTableTableConstraintForeignKeyReferencedTable:getTableTableConstraintForeignKeyReferencedTable"
                    },
                    "description": "The table that holds the primary key and is referenced by this foreign key.\n"
                }
            },
            "type": "object",
            "required": [
                "columnReferences",
                "name",
                "referencedTables"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableTableConstraintForeignKeyColumnReference:getTableTableConstraintForeignKeyColumnReference": {
            "properties": {
                "referencedColumn": {
                    "type": "string",
                    "description": "The column in the primary key that are referenced by the referencingColumn.\n"
                },
                "referencingColumn": {
                    "type": "string",
                    "description": "The column that composes the foreign key.\n"
                }
            },
            "type": "object",
            "required": [
                "referencedColumn",
                "referencingColumn"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableTableConstraintForeignKeyReferencedTable:getTableTableConstraintForeignKeyReferencedTable": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "The dataset ID.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this table.\n"
                },
                "tableId": {
                    "type": "string",
                    "description": "The table ID.\n"
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId",
                "tableId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableTableConstraintPrimaryKey:getTableTableConstraintPrimaryKey": {
            "properties": {
                "columns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The columns that are composed of the primary key constraint.\n"
                }
            },
            "type": "object",
            "required": [
                "columns"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableTableReplicationInfo:getTableTableReplicationInfo": {
            "properties": {
                "replicationIntervalMs": {
                    "type": "integer",
                    "description": "The interval at which the source materialized view is polled for updates. The default is 300000.\n"
                },
                "sourceDatasetId": {
                    "type": "string",
                    "description": "The ID of the source dataset.\n"
                },
                "sourceProjectId": {
                    "type": "string",
                    "description": "The ID of the source project.\n"
                },
                "sourceTableId": {
                    "type": "string",
                    "description": "The ID of the source materialized view.\n"
                }
            },
            "type": "object",
            "required": [
                "replicationIntervalMs",
                "sourceDatasetId",
                "sourceProjectId",
                "sourceTableId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableTimePartitioning:getTableTimePartitioning": {
            "properties": {
                "expirationMs": {
                    "type": "integer",
                    "description": "Number of milliseconds for which to keep the storage for a partition.\n"
                },
                "field": {
                    "type": "string",
                    "description": "The field used to determine how to create a time-based partition. If time-based partitioning is enabled without this value, the table is partitioned based on the load time.\n"
                },
                "requirePartitionFilter": {
                    "type": "boolean",
                    "description": "If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively.\n"
                }
            },
            "type": "object",
            "required": [
                "expirationMs",
                "field",
                "requirePartitionFilter",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTableView:getTableView": {
            "properties": {
                "query": {
                    "type": "string",
                    "description": "A query that BigQuery executes when the view is referenced.\n"
                },
                "useLegacySql": {
                    "type": "boolean",
                    "description": "Specifies whether to use BigQuery's legacy SQL for this view. If set to false, the view will use BigQuery's standard SQL\n"
                }
            },
            "type": "object",
            "required": [
                "query",
                "useLegacySql"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigquery/getTablesTable:getTablesTable": {
            "properties": {
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "User-provided table labels, in key/value pairs.\n"
                },
                "tableId": {
                    "type": "string",
                    "description": "The name of the table.\n"
                }
            },
            "type": "object",
            "required": [
                "labels",
                "tableId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:bigqueryanalyticshub/DataExchangeIamBindingCondition:DataExchangeIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigqueryanalyticshub/DataExchangeIamMemberCondition:DataExchangeIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigqueryanalyticshub/DataExchangeSharingEnvironmentConfig:DataExchangeSharingEnvironmentConfig": {
            "properties": {
                "dcrExchangeConfig": {
                    "$ref": "#/types/gcp:bigqueryanalyticshub/DataExchangeSharingEnvironmentConfigDcrExchangeConfig:DataExchangeSharingEnvironmentConfigDcrExchangeConfig",
                    "description": "Data Clean Room (DCR), used for privacy-safe and secured data sharing.\n",
                    "willReplaceOnChanges": true
                },
                "defaultExchangeConfig": {
                    "$ref": "#/types/gcp:bigqueryanalyticshub/DataExchangeSharingEnvironmentConfigDefaultExchangeConfig:DataExchangeSharingEnvironmentConfigDefaultExchangeConfig",
                    "description": "Default Analytics Hub data exchange, used for secured data sharing.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:bigqueryanalyticshub/DataExchangeSharingEnvironmentConfigDcrExchangeConfig:DataExchangeSharingEnvironmentConfigDcrExchangeConfig": {
            "type": "object"
        },
        "gcp:bigqueryanalyticshub/DataExchangeSharingEnvironmentConfigDefaultExchangeConfig:DataExchangeSharingEnvironmentConfigDefaultExchangeConfig": {
            "type": "object"
        },
        "gcp:bigqueryanalyticshub/DataExchangeSubscriptionDestinationDataset:DataExchangeSubscriptionDestinationDataset": {
            "properties": {
                "datasetReference": {
                    "$ref": "#/types/gcp:bigqueryanalyticshub/DataExchangeSubscriptionDestinationDatasetDatasetReference:DataExchangeSubscriptionDestinationDatasetDatasetReference",
                    "description": "A reference that identifies the destination dataset.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "A user-friendly description of the dataset.\n",
                    "willReplaceOnChanges": true
                },
                "friendlyName": {
                    "type": "string",
                    "description": "A descriptive name for the dataset.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The labels associated with this dataset. You can use these to\norganize and group your datasets.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "The geographic location where the dataset should reside.\nSee https://cloud.google.com/bigquery/docs/locations for supported locations.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetReference",
                "location"
            ]
        },
        "gcp:bigqueryanalyticshub/DataExchangeSubscriptionDestinationDatasetDatasetReference:DataExchangeSubscriptionDestinationDatasetDatasetReference": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this dataset.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId"
            ]
        },
        "gcp:bigqueryanalyticshub/DataExchangeSubscriptionLinkedDatasetMap:DataExchangeSubscriptionLinkedDatasetMap": {
            "properties": {
                "linkedDataset": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Name of the linked dataset, e.g. projects/subscriberproject/datasets/linkedDataset\n"
                },
                "linkedPubsubSubscription": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Name of the Pub/Sub subscription, e.g. projects/subscriberproject/subscriptions/subscriptions/sub_id\n"
                },
                "listing": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Listing for which linked resource is created.\n"
                },
                "resourceName": {
                    "type": "string",
                    "description": "(Required) The identifier for this object. Format specified above.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceName"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "linkedDataset",
                        "linkedPubsubSubscription",
                        "listing",
                        "resourceName"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/DataExchangeSubscriptionLinkedResource:DataExchangeSubscriptionLinkedResource": {
            "properties": {
                "linkedDataset": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Name of the linked dataset, e.g. projects/subscriberproject/datasets/linkedDataset\n"
                },
                "listing": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Listing for which linked resource is created.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "linkedDataset",
                        "listing"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingBigqueryDataset:ListingBigqueryDataset": {
            "properties": {
                "dataset": {
                    "type": "string",
                    "description": "Resource name of the dataset source for this listing. e.g. projects/myproject/datasets/123\n",
                    "willReplaceOnChanges": true
                },
                "effectiveReplicas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigqueryanalyticshub/ListingBigqueryDatasetEffectiveReplica:ListingBigqueryDatasetEffectiveReplica"
                    },
                    "description": "(Output)\nServer owned effective state of replicas. Contains both primary and secondary replicas.\nEach replica includes a system-computed (output-only) state and primary designation.\nStructure is documented below.\n"
                },
                "replicaLocations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of regions where the publisher has created shared dataset replicas.\n"
                },
                "selectedResources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigqueryanalyticshub/ListingBigqueryDatasetSelectedResource:ListingBigqueryDatasetSelectedResource"
                    },
                    "description": "Resource in this dataset that is selectively shared. This field is required for data clean room exchanges.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "dataset"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dataset",
                        "effectiveReplicas"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingBigqueryDatasetEffectiveReplica:ListingBigqueryDatasetEffectiveReplica": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The name of the location this data exchange listing.\n"
                },
                "primaryState": {
                    "type": "string",
                    "description": "Output-only. Indicates that this replica is the primary replica.\nPossible values: PRIMARY_STATE_UNSPECIFIED, PRIMARY_REPLICA\n"
                },
                "replicaState": {
                    "type": "string",
                    "description": "Output-only. Assigned by Analytics Hub based on real BigQuery replication state.\nPossible values: REPLICA_STATE_UNSPECIFIED, READY_TO_USE, UNAVAILABLE\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "location",
                        "primaryState",
                        "replicaState"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingBigqueryDatasetSelectedResource:ListingBigqueryDatasetSelectedResource": {
            "properties": {
                "routine": {
                    "type": "string",
                    "description": "Format: For routine: projects/{projectId}/datasets/{datasetId}/routines/{routineId} Example:\"projects/test_project/datasets/test_dataset/routines/test_routine\"\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedBigqueryDatasetEffectiveReplicas\"\" pulumi-lang-dotnet=\"\"NestedBigqueryDatasetEffectiveReplicas\"\" pulumi-lang-go=\"\"nestedBigqueryDatasetEffectiveReplicas\"\" pulumi-lang-python=\"\"nested_bigquery_dataset_effective_replicas\"\" pulumi-lang-yaml=\"\"nestedBigqueryDatasetEffectiveReplicas\"\" pulumi-lang-java=\"\"nestedBigqueryDatasetEffectiveReplicas\"\" pulumi-lang-hcl=\"\"nested_bigquery_dataset_effective_replicas\"\"\u003e\"nestedBigqueryDatasetEffectiveReplicas\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`effectiveReplicas`\" pulumi-lang-dotnet=\"`EffectiveReplicas`\" pulumi-lang-go=\"`effectiveReplicas`\" pulumi-lang-python=\"`effective_replicas`\" pulumi-lang-yaml=\"`effectiveReplicas`\" pulumi-lang-java=\"`effectiveReplicas`\" pulumi-lang-hcl=\"`effective_replicas`\"\u003e`effectiveReplicas`\u003c/span\u003e block contains:\n",
                    "willReplaceOnChanges": true
                },
                "table": {
                    "type": "string",
                    "description": "Format: For table: projects/{projectId}/datasets/{datasetId}/tables/{tableId} Example:\"projects/test_project/datasets/test_dataset/tables/test_table\"\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:bigqueryanalyticshub/ListingCommercialInfo:ListingCommercialInfo": {
            "properties": {
                "cloudMarketplaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigqueryanalyticshub/ListingCommercialInfoCloudMarketplace:ListingCommercialInfoCloudMarketplace"
                    },
                    "description": "(Output)\nDetails of the Marketplace Data Product associated with the Listing.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cloudMarketplaces"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingCommercialInfoCloudMarketplace:ListingCommercialInfoCloudMarketplace": {
            "properties": {
                "commercialState": {
                    "type": "string",
                    "description": "(Output)\nCommercial state of the Marketplace Data Product.\nPossible values: COMMERCIAL_STATE_UNSPECIFIED, ONBOARDING, ACTIVE\n"
                },
                "service": {
                    "type": "string",
                    "description": "(Output)\nResource name of the commercial service associated with the Marketplace Data Product. e.g. example.com\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "commercialState",
                        "service"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingDataProvider:ListingDataProvider": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the data provider.\n"
                },
                "primaryContact": {
                    "type": "string",
                    "description": "Email or URL of the data provider.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:bigqueryanalyticshub/ListingIamBindingCondition:ListingIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigqueryanalyticshub/ListingIamMemberCondition:ListingIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigqueryanalyticshub/ListingPublisher:ListingPublisher": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the listing publisher.\n"
                },
                "primaryContact": {
                    "type": "string",
                    "description": "Email or URL of the listing publisher.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:bigqueryanalyticshub/ListingPubsubTopic:ListingPubsubTopic": {
            "properties": {
                "dataAffinityRegions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region hint on where the data might be published. Data affinity regions are modifiable.\nSee https://cloud.google.com/about/locations for full listing of possible Cloud regions.\n"
                },
                "topic": {
                    "type": "string",
                    "description": "Resource name of the Pub/Sub topic source for this listing. e.g. projects/myproject/topics/topicId\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "topic"
            ]
        },
        "gcp:bigqueryanalyticshub/ListingRestrictedExportConfig:ListingRestrictedExportConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "If true, enable restricted export.\n"
                },
                "restrictDirectTableAccess": {
                    "type": "boolean",
                    "description": "(Output)\nIf true, restrict direct table access(read api/tabledata.list) on linked table.\n"
                },
                "restrictQueryResult": {
                    "type": "boolean",
                    "description": "If true, restrict export of query result derived from restricted linked dataset table.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "restrictDirectTableAccess"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingSubscriptionCommercialInfo:ListingSubscriptionCommercialInfo": {
            "properties": {
                "cloudMarketplaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigqueryanalyticshub/ListingSubscriptionCommercialInfoCloudMarketplace:ListingSubscriptionCommercialInfoCloudMarketplace"
                    },
                    "description": "(Output)\nCloud Marketplace commercial metadata for this subscription.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cloudMarketplaces"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingSubscriptionCommercialInfoCloudMarketplace:ListingSubscriptionCommercialInfoCloudMarketplace": {
            "properties": {
                "order": {
                    "type": "string",
                    "description": "(Output)\nResource name of the Marketplace Order.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "order"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingSubscriptionDestinationDataset:ListingSubscriptionDestinationDataset": {
            "properties": {
                "datasetReference": {
                    "$ref": "#/types/gcp:bigqueryanalyticshub/ListingSubscriptionDestinationDatasetDatasetReference:ListingSubscriptionDestinationDatasetDatasetReference",
                    "description": "A reference that identifies the destination dataset.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "description": {
                    "type": "string",
                    "description": "A user-friendly description of the dataset.\n",
                    "willReplaceOnChanges": true
                },
                "friendlyName": {
                    "type": "string",
                    "description": "A descriptive name for the dataset.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The labels associated with this dataset. You can use these to\norganize and group your datasets.\n",
                    "willReplaceOnChanges": true
                },
                "location": {
                    "type": "string",
                    "description": "The geographic location where the dataset should reside.\nSee https://cloud.google.com/bigquery/docs/locations for supported locations.\n",
                    "willReplaceOnChanges": true
                },
                "replicaLocations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of regions where the subscriber wants dataset replicas.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetReference",
                "location"
            ]
        },
        "gcp:bigqueryanalyticshub/ListingSubscriptionDestinationDatasetDatasetReference:ListingSubscriptionDestinationDatasetDatasetReference": {
            "properties": {
                "datasetId": {
                    "type": "string",
                    "description": "A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project containing this dataset.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "datasetId",
                "projectId"
            ]
        },
        "gcp:bigqueryanalyticshub/ListingSubscriptionLinkedDatasetMap:ListingSubscriptionLinkedDatasetMap": {
            "properties": {
                "linkedDataset": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Name of the linked dataset, e.g. projects/subscriberproject/datasets/linkedDataset\n"
                },
                "listing": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Listing for which linked resource is created.\n"
                },
                "resourceName": {
                    "type": "string",
                    "description": "(Required) The identifier for this object. Format specified above.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceName"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "linkedDataset",
                        "listing",
                        "resourceName"
                    ]
                }
            }
        },
        "gcp:bigqueryanalyticshub/ListingSubscriptionLinkedResource:ListingSubscriptionLinkedResource": {
            "properties": {
                "linkedDataset": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Name of the linked dataset, e.g. projects/subscriberproject/datasets/linkedDataset\n"
                },
                "listing": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Listing for which linked resource is created.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "linkedDataset",
                        "listing"
                    ]
                }
            }
        },
        "gcp:bigquerydatapolicy/DataPolicyDataMaskingPolicy:DataPolicyDataMaskingPolicy": {
            "properties": {
                "predefinedExpression": {
                    "type": "string",
                    "description": "The available masking rules. Learn more here: https://cloud.google.com/bigquery/docs/column-data-masking-intro#masking_options.\nPossible values are: `SHA256`, `ALWAYS_NULL`, `DEFAULT_MASKING_VALUE`, `LAST_FOUR_CHARACTERS`, `FIRST_FOUR_CHARACTERS`, `EMAIL_MASK`, `DATE_YEAR_MASK`.\n"
                },
                "routine": {
                    "type": "string",
                    "description": "The name of the BigQuery routine that contains the custom masking routine, in the format of projects/{projectNumber}/datasets/{dataset_id}/routines/{routine_id}.\n"
                }
            },
            "type": "object"
        },
        "gcp:bigquerydatapolicy/DataPolicyIamBindingCondition:DataPolicyIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigquerydatapolicy/DataPolicyIamMemberCondition:DataPolicyIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigtable/AppProfileDataBoostIsolationReadOnly:AppProfileDataBoostIsolationReadOnly": {
            "properties": {
                "computeBillingOwner": {
                    "type": "string",
                    "description": "The Compute Billing Owner for this Data Boost App Profile.\nPossible values are: `HOST_PAYS`.\n"
                }
            },
            "type": "object",
            "required": [
                "computeBillingOwner"
            ]
        },
        "gcp:bigtable/AppProfileSingleClusterRouting:AppProfileSingleClusterRouting": {
            "properties": {
                "allowTransactionalWrites": {
                    "type": "boolean",
                    "description": "If true, CheckAndMutateRow and ReadModifyWriteRow requests are allowed by this app profile.\nIt is unsafe to send these requests to the same table/row/column in multiple clusters.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The cluster to which read/write requests should be routed.\n"
                }
            },
            "type": "object",
            "required": [
                "clusterId"
            ]
        },
        "gcp:bigtable/AppProfileStandardIsolation:AppProfileStandardIsolation": {
            "properties": {
                "priority": {
                    "type": "string",
                    "description": "The priority of requests sent using this app profile.\nPossible values are: `PRIORITY_LOW`, `PRIORITY_MEDIUM`, `PRIORITY_HIGH`.\n"
                }
            },
            "type": "object",
            "required": [
                "priority"
            ]
        },
        "gcp:bigtable/AuthorizedViewSubsetView:AuthorizedViewSubsetView": {
            "properties": {
                "familySubsets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:bigtable/AuthorizedViewSubsetViewFamilySubset:AuthorizedViewSubsetViewFamilySubset"
                    },
                    "description": "A group of column family subsets to be included in the authorized view. This can be specified multiple times. Structure is documented below.\n\n-----\n"
                },
                "rowPrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of Base64-encoded row prefixes to be included in the authorized view. To provide access to all rows, include the empty string as a prefix (\"\").\n"
                }
            },
            "type": "object"
        },
        "gcp:bigtable/AuthorizedViewSubsetViewFamilySubset:AuthorizedViewSubsetViewFamilySubset": {
            "properties": {
                "familyName": {
                    "type": "string",
                    "description": "Name of the column family to be included in the authorized view. The specified column family must exist in the parent table of this authorized view.\n"
                },
                "qualifierPrefixes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of Base64-encoded prefixes for qualifiers of the column family to be included in the authorized view.\nEvery qualifier starting with one of these prefixes is included in the authorized view. To provide access to all qualifiers, include the empty string as a prefix (\"\").\n"
                },
                "qualifiers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of Base64-encoded individual exact column qualifiers of the column family to be included in the authorized view.\n"
                }
            },
            "type": "object",
            "required": [
                "familyName"
            ]
        },
        "gcp:bigtable/GCPolicyMaxAge:GCPolicyMaxAge": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Number of days before applying GC policy.\n",
                    "deprecationMessage": "Deprecated in favor of duration",
                    "willReplaceOnChanges": true
                },
                "duration": {
                    "type": "string",
                    "description": "Duration before applying GC policy (ex. \"8h\"). This is required when \u003cspan pulumi-lang-nodejs=\"`days`\" pulumi-lang-dotnet=\"`Days`\" pulumi-lang-go=\"`days`\" pulumi-lang-python=\"`days`\" pulumi-lang-yaml=\"`days`\" pulumi-lang-java=\"`days`\" pulumi-lang-hcl=\"`days`\"\u003e`days`\u003c/span\u003e isn't set\n\n-----\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "days",
                        "duration"
                    ]
                }
            }
        },
        "gcp:bigtable/GCPolicyMaxVersion:GCPolicyMaxVersion": {
            "properties": {
                "number": {
                    "type": "integer",
                    "description": "Number of version before applying the GC policy.\n\n-----\n\u003cspan pulumi-lang-nodejs=\"`gcRules`\" pulumi-lang-dotnet=\"`GcRules`\" pulumi-lang-go=\"`gcRules`\" pulumi-lang-python=\"`gc_rules`\" pulumi-lang-yaml=\"`gcRules`\" pulumi-lang-java=\"`gcRules`\" pulumi-lang-hcl=\"`gc_rules`\"\u003e`gcRules`\u003c/span\u003e include 2 fields:\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "number"
            ]
        },
        "gcp:bigtable/InstanceCluster:InstanceCluster": {
            "properties": {
                "autoscalingConfig": {
                    "$ref": "#/types/gcp:bigtable/InstanceClusterAutoscalingConfig:InstanceClusterAutoscalingConfig",
                    "description": "[Autoscaling](https://cloud.google.com/bigtable/docs/autoscaling#parameters) config for the cluster, contains the following arguments:\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the Cloud Bigtable cluster. Must be 6-30 characters and must only contain hyphens, lowercase letters and numbers.\n"
                },
                "kmsKeyName": {
                    "type": "string",
                    "description": "Describes the Cloud KMS encryption key that will be used to protect the destination Bigtable cluster. The requirements for this key are: 1) The Cloud Bigtable service account associated with the project that contains this cluster must be granted the `cloudkms.cryptoKeyEncrypterDecrypter` role on the CMEK key. 2) Only regional keys can be used and the region of the CMEK key must match the region of the cluster.\n"
                },
                "nodeScalingFactor": {
                    "type": "string",
                    "description": "The node scaling factor for this cluster. One of `\"NodeScalingFactor1X\"` or `\"NodeScalingFactor2X\"`. Defaults to `\"NodeScalingFactor1X\"`. If `\"NodeScalingFactor2X\"` is specified, then \u003cspan pulumi-lang-nodejs=\"`numNodes`\" pulumi-lang-dotnet=\"`NumNodes`\" pulumi-lang-go=\"`numNodes`\" pulumi-lang-python=\"`num_nodes`\" pulumi-lang-yaml=\"`numNodes`\" pulumi-lang-java=\"`numNodes`\" pulumi-lang-hcl=\"`num_nodes`\"\u003e`numNodes`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`minNodes`\" pulumi-lang-dotnet=\"`MinNodes`\" pulumi-lang-go=\"`minNodes`\" pulumi-lang-python=\"`min_nodes`\" pulumi-lang-yaml=\"`minNodes`\" pulumi-lang-java=\"`minNodes`\" pulumi-lang-hcl=\"`min_nodes`\"\u003e`minNodes`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`maxNodes`\" pulumi-lang-dotnet=\"`MaxNodes`\" pulumi-lang-go=\"`maxNodes`\" pulumi-lang-python=\"`max_nodes`\" pulumi-lang-yaml=\"`maxNodes`\" pulumi-lang-java=\"`maxNodes`\" pulumi-lang-hcl=\"`max_nodes`\"\u003e`maxNodes`\u003c/span\u003e would need to be specified in increments of 2. This value cannot be updated after the cluster is created.\n\n\u003e **Note**: Removing the field entirely from the config will cause the provider to default to the backend value.\n\n\u003e **Warning**: Modifying this field will cause the provider to delete/recreate the entire resource.\n\n\u003e **Warning:** Modifying the \u003cspan pulumi-lang-nodejs=\"`storageType`\" pulumi-lang-dotnet=\"`StorageType`\" pulumi-lang-go=\"`storageType`\" pulumi-lang-python=\"`storage_type`\" pulumi-lang-yaml=\"`storageType`\" pulumi-lang-java=\"`storageType`\" pulumi-lang-hcl=\"`storage_type`\"\u003e`storageType`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\" pulumi-lang-hcl=\"`zone`\"\u003e`zone`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`kmsKeyName`\" pulumi-lang-dotnet=\"`KmsKeyName`\" pulumi-lang-go=\"`kmsKeyName`\" pulumi-lang-python=\"`kms_key_name`\" pulumi-lang-yaml=\"`kmsKeyName`\" pulumi-lang-java=\"`kmsKeyName`\" pulumi-lang-hcl=\"`kms_key_name`\"\u003e`kmsKeyName`\u003c/span\u003e of an existing cluster (by\n\u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\" pulumi-lang-hcl=\"`cluster_id`\"\u003e`clusterId`\u003c/span\u003e) will cause the provider to delete/recreate the entire\n\u003cspan pulumi-lang-nodejs=\"`gcp.bigtable.Instance`\" pulumi-lang-dotnet=\"`gcp.bigtable.Instance`\" pulumi-lang-go=\"`bigtable.Instance`\" pulumi-lang-python=\"`bigtable.Instance`\" pulumi-lang-yaml=\"`gcp.bigtable.Instance`\" pulumi-lang-java=\"`gcp.bigtable.Instance`\" pulumi-lang-hcl=\"`google_bigtable_instance`\"\u003e`gcp.bigtable.Instance`\u003c/span\u003e resource. If these values are changing, use a new\n\u003cspan pulumi-lang-nodejs=\"`clusterId`\" pulumi-lang-dotnet=\"`ClusterId`\" pulumi-lang-go=\"`clusterId`\" pulumi-lang-python=\"`cluster_id`\" pulumi-lang-yaml=\"`clusterId`\" pulumi-lang-java=\"`clusterId`\" pulumi-lang-hcl=\"`cluster_id`\"\u003e`clusterId`\u003c/span\u003e.\n"
                },
                "numNodes": {
                    "type": "integer",
                    "description": "The number of nodes in the cluster.\nIf no value is set, Cloud Bigtable automatically allocates nodes based on your data footprint and optimized for 50% storage utilization.\n"
                },
                "state": {
                    "type": "string",
                    "description": "describes the current state of the cluster.\n"
                },
                "storageType": {
                    "type": "string",
                    "description": "The storage type to use. One of `\"SSD\"` or\n`\"HDD\"`. Defaults to `\"SSD\"`.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone to create the Cloud Bigtable cluster in. If it not\nspecified, the provider zone is used. Each cluster must have a different zone in the same region. Zones that support\nBigtable instances are noted on the [Cloud Bigtable locations page](https://cloud.google.com/bigtable/docs/locations).\n"
                }
            },
            "type": "object",
            "required": [
                "clusterId"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clusterId",
                        "kmsKeyName",
                        "numNodes",
                        "state",
                        "zone"
                    ]
                }
            }
        },
        "gcp:bigtable/InstanceClusterAutoscalingConfig:InstanceClusterAutoscalingConfig": {
            "properties": {
                "cpuTarget": {
                    "type": "integer",
                    "description": "The target CPU utilization for autoscaling, in percentage. Must be between 10 and 80.\n"
                },
                "maxNodes": {
                    "type": "integer",
                    "description": "The maximum number of nodes for autoscaling.\n"
                },
                "minNodes": {
                    "type": "integer",
                    "description": "The minimum number of nodes for autoscaling.\n"
                },
                "storageTarget": {
                    "type": "integer",
                    "description": "The target storage utilization for autoscaling, in GB, for each node in a cluster. This number is limited between 2560 (2.5TiB) and 5120 (5TiB) for a SSD cluster and between 8192 (8TiB) and 16384 (16 TiB) for an HDD cluster. If not set, whatever is already set for the cluster will not change, or if the cluster is just being created, it will use the default value of 2560 for SSD clusters and 8192 for HDD clusters.\n\n\u003e **Warning**: Only one of \u003cspan pulumi-lang-nodejs=\"`autoscalingConfig`\" pulumi-lang-dotnet=\"`AutoscalingConfig`\" pulumi-lang-go=\"`autoscalingConfig`\" pulumi-lang-python=\"`autoscaling_config`\" pulumi-lang-yaml=\"`autoscalingConfig`\" pulumi-lang-java=\"`autoscalingConfig`\" pulumi-lang-hcl=\"`autoscaling_config`\"\u003e`autoscalingConfig`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`numNodes`\" pulumi-lang-dotnet=\"`NumNodes`\" pulumi-lang-go=\"`numNodes`\" pulumi-lang-python=\"`num_nodes`\" pulumi-lang-yaml=\"`numNodes`\" pulumi-lang-java=\"`numNodes`\" pulumi-lang-hcl=\"`num_nodes`\"\u003e`numNodes`\u003c/span\u003e should be set for a cluster. If both are set, \u003cspan pulumi-lang-nodejs=\"`numNodes`\" pulumi-lang-dotnet=\"`NumNodes`\" pulumi-lang-go=\"`numNodes`\" pulumi-lang-python=\"`num_nodes`\" pulumi-lang-yaml=\"`numNodes`\" pulumi-lang-java=\"`numNodes`\" pulumi-lang-hcl=\"`num_nodes`\"\u003e`numNodes`\u003c/span\u003e is ignored. If none is set, autoscaling will be disabled and sized to the current node count.\n"
                }
            },
            "type": "object",
            "required": [
                "cpuTarget",
                "maxNodes",
                "minNodes"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpuTarget",
                        "maxNodes",
                        "minNodes",
                        "storageTarget"
                    ]
                }
            }
        },
        "gcp:bigtable/InstanceIamBindingCondition:InstanceIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\nFor \u003cspan pulumi-lang-nodejs=\"`gcp.bigtable.InstanceIamPolicy`\" pulumi-lang-dotnet=\"`gcp.bigtable.InstanceIamPolicy`\" pulumi-lang-go=\"`bigtable.InstanceIamPolicy`\" pulumi-lang-python=\"`bigtable.InstanceIamPolicy`\" pulumi-lang-yaml=\"`gcp.bigtable.InstanceIamPolicy`\" pulumi-lang-java=\"`gcp.bigtable.InstanceIamPolicy`\" pulumi-lang-hcl=\"`google_bigtable_instance_iam_policy`\"\u003e`gcp.bigtable.InstanceIamPolicy`\u003c/span\u003e only:\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigtable/InstanceIamMemberCondition:InstanceIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\nFor \u003cspan pulumi-lang-nodejs=\"`gcp.bigtable.InstanceIamPolicy`\" pulumi-lang-dotnet=\"`gcp.bigtable.InstanceIamPolicy`\" pulumi-lang-go=\"`bigtable.InstanceIamPolicy`\" pulumi-lang-python=\"`bigtable.InstanceIamPolicy`\" pulumi-lang-yaml=\"`gcp.bigtable.InstanceIamPolicy`\" pulumi-lang-java=\"`gcp.bigtable.InstanceIamPolicy`\" pulumi-lang-hcl=\"`google_bigtable_instance_iam_policy`\"\u003e`gcp.bigtable.InstanceIamPolicy`\u003c/span\u003e only:\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigtable/SchemaBundleProtoSchema:SchemaBundleProtoSchema": {
            "properties": {
                "protoDescriptors": {
                    "type": "string",
                    "description": "Base64 encoded content of the file.\n"
                }
            },
            "type": "object",
            "required": [
                "protoDescriptors"
            ]
        },
        "gcp:bigtable/TableAutomatedBackupPolicy:TableAutomatedBackupPolicy": {
            "properties": {
                "frequency": {
                    "type": "string",
                    "description": "How frequently automated backups should occur.\n"
                },
                "locations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of Cloud Bigtable zones where automated backups are allowed to be created. If empty, automated backups will be created in all zones of the instance. Locations are in the format projects/{project}/locations/{zone}. This field can only be set for tables in Enterprise Plus instances.\n"
                },
                "retentionPeriod": {
                    "type": "string",
                    "description": "How long the automated backups should be retained.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "frequency",
                        "locations",
                        "retentionPeriod"
                    ]
                }
            }
        },
        "gcp:bigtable/TableColumnFamily:TableColumnFamily": {
            "properties": {
                "family": {
                    "type": "string",
                    "description": "The name of the column family.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the column family.\n"
                }
            },
            "type": "object",
            "required": [
                "family"
            ]
        },
        "gcp:bigtable/TableIamBindingCondition:TableIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:bigtable/TableIamMemberCondition:TableIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:billing/AccountIamBindingCondition:AccountIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:billing/AccountIamMemberCondition:AccountIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:billing/BudgetAllUpdatesRule:BudgetAllUpdatesRule": {
            "properties": {
                "disableDefaultIamRecipients": {
                    "type": "boolean",
                    "description": "Boolean. When set to true, disables default notifications sent\nwhen a threshold is exceeded. Default recipients are\nthose with Billing Account Administrators and Billing\nAccount Users IAM roles for the target account.\n"
                },
                "enableProjectLevelRecipients": {
                    "type": "boolean",
                    "description": "When set to true, and when the budget has a single project configured,\nnotifications will be sent to project level recipients of that project.\nThis field will be ignored if the budget has multiple or no project configured.\nCurrently, project level recipients are the users with Owner role on a cloud project.\n"
                },
                "monitoringNotificationChannels": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The full resource name of a monitoring notification\nchannel in the form\nprojects/{project_id}/notificationChannels/{channel_id}.\nA maximum of 5 channels are allowed.\n"
                },
                "pubsubTopic": {
                    "type": "string",
                    "description": "The name of the Cloud Pub/Sub topic where budget related\nmessages will be published, in the form\nprojects/{project_id}/topics/{topic_id}. Updates are sent\nat regular intervals to the topic.\n"
                },
                "schemaVersion": {
                    "type": "string",
                    "description": "The schema version of the notification. Only \"1.0\" is\naccepted. It represents the JSON schema as defined in\nhttps://cloud.google.com/billing/docs/how-to/budgets#notification_format.\n"
                }
            },
            "type": "object"
        },
        "gcp:billing/BudgetAmount:BudgetAmount": {
            "properties": {
                "lastPeriodAmount": {
                    "type": "boolean",
                    "description": "Configures a budget amount that is automatically set to 100% of\nlast period's spend.\nBoolean. Set value to true to use. Do not set to false, instead\nuse the \u003cspan pulumi-lang-nodejs=\"`specifiedAmount`\" pulumi-lang-dotnet=\"`SpecifiedAmount`\" pulumi-lang-go=\"`specifiedAmount`\" pulumi-lang-python=\"`specified_amount`\" pulumi-lang-yaml=\"`specifiedAmount`\" pulumi-lang-java=\"`specifiedAmount`\" pulumi-lang-hcl=\"`specified_amount`\"\u003e`specifiedAmount`\u003c/span\u003e block.\n"
                },
                "specifiedAmount": {
                    "$ref": "#/types/gcp:billing/BudgetAmountSpecifiedAmount:BudgetAmountSpecifiedAmount",
                    "description": "A specified amount to use as the budget. currencyCode is\noptional. If specified, it must match the currency of the\nbilling account. The currencyCode is provided on output.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:billing/BudgetAmountSpecifiedAmount:BudgetAmountSpecifiedAmount": {
            "properties": {
                "currencyCode": {
                    "type": "string",
                    "description": "The 3-letter currency code defined in ISO 4217.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999\ninclusive. If units is positive, nanos must be positive or\nzero. If units is zero, nanos can be positive, zero, or\nnegative. If units is negative, nanos must be negative or\nzero. For example $-1.75 is represented as units=-1 and\nnanos=-750,000,000.\n"
                },
                "units": {
                    "type": "string",
                    "description": "The whole units of the amount. For example if currencyCode\nis \"USD\", then 1 unit is one US dollar.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "currencyCode"
                    ]
                }
            }
        },
        "gcp:billing/BudgetBudgetFilter:BudgetBudgetFilter": {
            "properties": {
                "calendarPeriod": {
                    "type": "string",
                    "description": "A CalendarPeriod represents the abstract concept of a recurring time period that has a\ncanonical start. Grammatically, \"the start of the current CalendarPeriod\".\nAll calendar times begin at 12 AM US and Canadian Pacific Time (UTC-8).\nExactly one of \u003cspan pulumi-lang-nodejs=\"`calendarPeriod`\" pulumi-lang-dotnet=\"`CalendarPeriod`\" pulumi-lang-go=\"`calendarPeriod`\" pulumi-lang-python=\"`calendar_period`\" pulumi-lang-yaml=\"`calendarPeriod`\" pulumi-lang-java=\"`calendarPeriod`\" pulumi-lang-hcl=\"`calendar_period`\"\u003e`calendarPeriod`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`customPeriod`\" pulumi-lang-dotnet=\"`CustomPeriod`\" pulumi-lang-go=\"`customPeriod`\" pulumi-lang-python=\"`custom_period`\" pulumi-lang-yaml=\"`customPeriod`\" pulumi-lang-java=\"`customPeriod`\" pulumi-lang-hcl=\"`custom_period`\"\u003e`customPeriod`\u003c/span\u003e must be provided.\nPossible values are: `MONTH`, `QUARTER`, `YEAR`, `CALENDAR_PERIOD_UNSPECIFIED`.\n"
                },
                "creditTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. If creditTypesTreatment is INCLUDE_SPECIFIED_CREDITS,\nthis is a list of credit types to be subtracted from gross cost to determine the spend for threshold calculations. See a list of acceptable credit type values.\nIf creditTypesTreatment is not INCLUDE_SPECIFIED_CREDITS, this field must be empty.\n"
                },
                "creditTypesTreatment": {
                    "type": "string",
                    "description": "Specifies how credits should be treated when determining spend\nfor threshold calculations.\nDefault value is `INCLUDE_ALL_CREDITS`.\nPossible values are: `INCLUDE_ALL_CREDITS`, `EXCLUDE_ALL_CREDITS`, `INCLUDE_SPECIFIED_CREDITS`.\n"
                },
                "customPeriod": {
                    "$ref": "#/types/gcp:billing/BudgetBudgetFilterCustomPeriod:BudgetBudgetFilterCustomPeriod",
                    "description": "Specifies to track usage from any start date (required) to any end date (optional).\nThis time period is static, it does not recur.\nExactly one of \u003cspan pulumi-lang-nodejs=\"`calendarPeriod`\" pulumi-lang-dotnet=\"`CalendarPeriod`\" pulumi-lang-go=\"`calendarPeriod`\" pulumi-lang-python=\"`calendar_period`\" pulumi-lang-yaml=\"`calendarPeriod`\" pulumi-lang-java=\"`calendarPeriod`\" pulumi-lang-hcl=\"`calendar_period`\"\u003e`calendarPeriod`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`customPeriod`\" pulumi-lang-dotnet=\"`CustomPeriod`\" pulumi-lang-go=\"`customPeriod`\" pulumi-lang-python=\"`custom_period`\" pulumi-lang-yaml=\"`customPeriod`\" pulumi-lang-java=\"`customPeriod`\" pulumi-lang-hcl=\"`custom_period`\"\u003e`customPeriod`\u003c/span\u003e must be provided.\nStructure is documented below.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A single label and value pair specifying that usage from only\nthis set of labeled resources should be included in the budget.\n"
                },
                "projects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of projects of the form projects/{project_number},\nspecifying that usage from only this set of projects should be\nincluded in the budget. If omitted, the report will include\nall usage for the billing account, regardless of which project\nthe usage occurred on.\n"
                },
                "resourceAncestors": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of folder and organization names of the form folders/{folderId} or organizations/{organizationId},\nspecifying that usage from only this set of folders and organizations should be included in the budget.\nIf omitted, the budget includes all usage that the billing account pays for. If the folder or organization\ncontains projects that are paid for by a different Cloud Billing account, the budget doesn't apply to those projects.\n"
                },
                "services": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of services of the form services/{service_id},\nspecifying that usage from only this set of services should be\nincluded in the budget. If omitted, the report will include\nusage for all the services. The service names are available\nthrough the Catalog API:\nhttps://cloud.google.com/billing/v1/how-tos/catalog-api.\n"
                },
                "subaccounts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of subaccounts of the form billingAccounts/{account_id},\nspecifying that usage from only this set of subaccounts should\nbe included in the budget. If a subaccount is set to the name of\nthe parent account, usage from the parent account will be included.\nIf the field is omitted, the report will include usage from the parent\naccount and all subaccounts, if they exist.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "labels",
                        "services"
                    ]
                }
            }
        },
        "gcp:billing/BudgetBudgetFilterCustomPeriod:BudgetBudgetFilterCustomPeriod": {
            "properties": {
                "endDate": {
                    "$ref": "#/types/gcp:billing/BudgetBudgetFilterCustomPeriodEndDate:BudgetBudgetFilterCustomPeriodEndDate",
                    "description": "Optional. The end date of the time period. Budgets with elapsed end date won't be processed.\nIf unset, specifies to track all usage incurred since the startDate.\nStructure is documented below.\n"
                },
                "startDate": {
                    "$ref": "#/types/gcp:billing/BudgetBudgetFilterCustomPeriodStartDate:BudgetBudgetFilterCustomPeriodStartDate",
                    "description": "A start date is required. The start date must be after January 1, 2017.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "startDate"
            ]
        },
        "gcp:billing/BudgetBudgetFilterCustomPeriodEndDate:BudgetBudgetFilterCustomPeriodEndDate": {
            "properties": {
                "day": {
                    "type": "integer",
                    "description": "Day of a month. Must be from 1 to 31 and valid for the year and month.\n"
                },
                "month": {
                    "type": "integer",
                    "description": "Month of a year. Must be from 1 to 12.\n"
                },
                "year": {
                    "type": "integer",
                    "description": "Year of the date. Must be from 1 to 9999.\n"
                }
            },
            "type": "object",
            "required": [
                "day",
                "month",
                "year"
            ]
        },
        "gcp:billing/BudgetBudgetFilterCustomPeriodStartDate:BudgetBudgetFilterCustomPeriodStartDate": {
            "properties": {
                "day": {
                    "type": "integer",
                    "description": "Day of a month. Must be from 1 to 31 and valid for the year and month.\n"
                },
                "month": {
                    "type": "integer",
                    "description": "Month of a year. Must be from 1 to 12.\n"
                },
                "year": {
                    "type": "integer",
                    "description": "Year of the date. Must be from 1 to 9999.\n"
                }
            },
            "type": "object",
            "required": [
                "day",
                "month",
                "year"
            ]
        },
        "gcp:billing/BudgetThresholdRule:BudgetThresholdRule": {
            "properties": {
                "spendBasis": {
                    "type": "string",
                    "description": "The type of basis used to determine if spend has passed\nthe threshold.\nDefault value is `CURRENT_SPEND`.\nPossible values are: `CURRENT_SPEND`, `FORECASTED_SPEND`.\n"
                },
                "thresholdPercent": {
                    "type": "number",
                    "description": "Send an alert when this threshold is exceeded. This is a\n1.0-based percentage, so 0.5 = 50%. Must be \u003e= 0.\n"
                }
            },
            "type": "object",
            "required": [
                "thresholdPercent"
            ]
        },
        "gcp:binaryauthorization/AttestorAttestationAuthorityNote:AttestorAttestationAuthorityNote": {
            "properties": {
                "delegationServiceAccountEmail": {
                    "type": "string",
                    "description": "(Output)\nThis field will contain the service account email address that\nthis Attestor will use as the principal when querying Container\nAnalysis. Attestor administrators must grant this service account\nthe IAM role needed to read attestations from the noteReference in\nContainer Analysis (containeranalysis.notes.occurrences.viewer).\nThis email address is fixed for the lifetime of the Attestor, but\ncallers should not make any other assumptions about the service\naccount email; future versions may use an email based on a\ndifferent naming pattern.\n"
                },
                "noteReference": {
                    "type": "string",
                    "description": "The resource name of a ATTESTATION_AUTHORITY Note, created by the\nuser. If the Note is in a different project from the Attestor, it\nshould be specified in the format `projects/*/notes/*` (or the legacy\n`providers/*/notes/*`). This field may not be updated.\nAn attestation by this attestor is stored as a Container Analysis\nATTESTATION_AUTHORITY Occurrence that names a container image\nand that links to this Note.\n",
                    "willReplaceOnChanges": true
                },
                "publicKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:binaryauthorization/AttestorAttestationAuthorityNotePublicKey:AttestorAttestationAuthorityNotePublicKey"
                    },
                    "description": "Public keys that verify attestations signed by this attestor. This\nfield may be updated.\nIf this field is non-empty, one of the specified public keys must\nverify that an attestation was signed by this attestor for the\nimage specified in the admission request.\nIf this field is empty, this attestor always returns that no valid\nattestations exist.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "noteReference"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "delegationServiceAccountEmail",
                        "noteReference"
                    ]
                }
            }
        },
        "gcp:binaryauthorization/AttestorAttestationAuthorityNotePublicKey:AttestorAttestationAuthorityNotePublicKey": {
            "properties": {
                "asciiArmoredPgpPublicKey": {
                    "type": "string",
                    "description": "ASCII-armored representation of a PGP public key, as the\nentire output by the command\n`gpg --export --armor foo@example.com` (either LF or CRLF\nline endings). When using this field, id should be left\nblank. The BinAuthz API handlers will calculate the ID\nand fill it in automatically. BinAuthz computes this ID\nas the OpenPGP RFC4880 V4 fingerprint, represented as\nupper-case hex. If id is provided by the caller, it will\nbe overwritten by the API-calculated ID.\n"
                },
                "comment": {
                    "type": "string",
                    "description": "A descriptive comment. This field may be updated.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of this public key. Signatures verified by BinAuthz\nmust include the ID of the public key that can be used to\nverify them, and that ID must match the contents of this\nfield exactly. Additional restrictions on this field can\nbe imposed based on which public key type is encapsulated.\nSee the documentation on publicKey cases below for details.\n"
                },
                "pkixPublicKey": {
                    "$ref": "#/types/gcp:binaryauthorization/AttestorAttestationAuthorityNotePublicKeyPkixPublicKey:AttestorAttestationAuthorityNotePublicKeyPkixPublicKey",
                    "description": "A raw PKIX SubjectPublicKeyInfo format public key.\nNOTE: id may be explicitly provided by the caller when using this\ntype of public key, but it MUST be a valid RFC3986 URI. If id is left\nblank, a default one will be computed based on the digest of the DER\nencoding of the public key.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id"
                    ]
                }
            }
        },
        "gcp:binaryauthorization/AttestorAttestationAuthorityNotePublicKeyPkixPublicKey:AttestorAttestationAuthorityNotePublicKeyPkixPublicKey": {
            "properties": {
                "publicKeyPem": {
                    "type": "string",
                    "description": "A PEM-encoded public key, as described in\n`https://tools.ietf.org/html/rfc7468#section-13`\n"
                },
                "signatureAlgorithm": {
                    "type": "string",
                    "description": "The signature algorithm used to verify a message against\na signature using this key. These signature algorithm must\nmatch the structure and any object identifiers encoded in\npublicKeyPem (i.e. this algorithm must match that of the\npublic key).\n"
                }
            },
            "type": "object"
        },
        "gcp:binaryauthorization/AttestorIamBindingCondition:AttestorIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:binaryauthorization/AttestorIamMemberCondition:AttestorIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:binaryauthorization/PolicyAdmissionWhitelistPattern:PolicyAdmissionWhitelistPattern": {
            "properties": {
                "namePattern": {
                    "type": "string",
                    "description": "An image name pattern to whitelist, in the form\n`registry/path/to/image`. This supports a trailing * as a\nwildcard, but this is allowed only in text after the registry/\npart.\n"
                }
            },
            "type": "object",
            "required": [
                "namePattern"
            ]
        },
        "gcp:binaryauthorization/PolicyClusterAdmissionRule:PolicyClusterAdmissionRule": {
            "properties": {
                "cluster": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "enforcementMode": {
                    "type": "string",
                    "description": "The action when a pod creation is denied by the admission rule.\nPossible values are: `ENFORCED_BLOCK_AND_AUDIT_LOG`, `DRYRUN_AUDIT_LOG_ONLY`.\n"
                },
                "evaluationMode": {
                    "type": "string",
                    "description": "How this admission rule will be evaluated.\nPossible values are: `ALWAYS_ALLOW`, `REQUIRE_ATTESTATION`, `ALWAYS_DENY`.\n"
                },
                "requireAttestationsBies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The resource names of the attestors that must attest to a\ncontainer image. If the attestor is in a different project from the\npolicy, it should be specified in the format `projects/*/attestors/*`.\nEach attestor must exist before a policy can reference it. To add an\nattestor to a policy the principal issuing the policy change\nrequest must be able to read the attestor resource.\nNote: this field must be non-empty when the\u003cspan pulumi-lang-nodejs=\" evaluationMode \" pulumi-lang-dotnet=\" EvaluationMode \" pulumi-lang-go=\" evaluationMode \" pulumi-lang-python=\" evaluation_mode \" pulumi-lang-yaml=\" evaluationMode \" pulumi-lang-java=\" evaluationMode \" pulumi-lang-hcl=\" evaluation_mode \"\u003e evaluationMode \u003c/span\u003efield\nspecifies REQUIRE_ATTESTATION, otherwise it must be empty.\n"
                }
            },
            "type": "object",
            "required": [
                "cluster",
                "enforcementMode",
                "evaluationMode"
            ]
        },
        "gcp:binaryauthorization/PolicyDefaultAdmissionRule:PolicyDefaultAdmissionRule": {
            "properties": {
                "enforcementMode": {
                    "type": "string",
                    "description": "The action when a pod creation is denied by the admission rule.\nPossible values are: `ENFORCED_BLOCK_AND_AUDIT_LOG`, `DRYRUN_AUDIT_LOG_ONLY`.\n"
                },
                "evaluationMode": {
                    "type": "string",
                    "description": "How this admission rule will be evaluated.\nPossible values are: `ALWAYS_ALLOW`, `REQUIRE_ATTESTATION`, `ALWAYS_DENY`.\n"
                },
                "requireAttestationsBies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The resource names of the attestors that must attest to a\ncontainer image. If the attestor is in a different project from the\npolicy, it should be specified in the format `projects/*/attestors/*`.\nEach attestor must exist before a policy can reference it. To add an\nattestor to a policy the principal issuing the policy change\nrequest must be able to read the attestor resource.\nNote: this field must be non-empty when the\u003cspan pulumi-lang-nodejs=\" evaluationMode \" pulumi-lang-dotnet=\" EvaluationMode \" pulumi-lang-go=\" evaluationMode \" pulumi-lang-python=\" evaluation_mode \" pulumi-lang-yaml=\" evaluationMode \" pulumi-lang-java=\" evaluationMode \" pulumi-lang-hcl=\" evaluation_mode \"\u003e evaluationMode \u003c/span\u003efield\nspecifies REQUIRE_ATTESTATION, otherwise it must be empty.\n"
                }
            },
            "type": "object",
            "required": [
                "enforcementMode",
                "evaluationMode"
            ]
        },
        "gcp:blockchainnodeengine/BlockchainNodesConnectionInfo:BlockchainNodesConnectionInfo": {
            "properties": {
                "endpointInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:blockchainnodeengine/BlockchainNodesConnectionInfoEndpointInfo:BlockchainNodesConnectionInfoEndpointInfo"
                    },
                    "description": "(Output)\nThe endpoint information through which to interact with a blockchain node.\nStructure is documented below.\n"
                },
                "serviceAttachment": {
                    "type": "string",
                    "description": "(Output)\nA service attachment that exposes a node, and has the following format: projects/{project}/regions/{region}/serviceAttachments/{service_attachment_name}\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endpointInfos",
                        "serviceAttachment"
                    ]
                }
            }
        },
        "gcp:blockchainnodeengine/BlockchainNodesConnectionInfoEndpointInfo:BlockchainNodesConnectionInfoEndpointInfo": {
            "properties": {
                "jsonRpcApiEndpoint": {
                    "type": "string",
                    "description": "(Output)\nThe assigned URL for the node JSON-RPC API endpoint.\n"
                },
                "websocketsApiEndpoint": {
                    "type": "string",
                    "description": "(Output)\nThe assigned URL for the node WebSockets API endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "jsonRpcApiEndpoint",
                        "websocketsApiEndpoint"
                    ]
                }
            }
        },
        "gcp:blockchainnodeengine/BlockchainNodesEthereumDetails:BlockchainNodesEthereumDetails": {
            "properties": {
                "additionalEndpoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:blockchainnodeengine/BlockchainNodesEthereumDetailsAdditionalEndpoint:BlockchainNodesEthereumDetailsAdditionalEndpoint"
                    },
                    "description": "(Output)\nUser-provided key-value pairs\nStructure is documented below.\n"
                },
                "apiEnableAdmin": {
                    "type": "boolean",
                    "description": "Enables JSON-RPC access to functions in the admin namespace. Defaults to false.\n",
                    "willReplaceOnChanges": true
                },
                "apiEnableDebug": {
                    "type": "boolean",
                    "description": "Enables JSON-RPC access to functions in the debug namespace. Defaults to false.\n",
                    "willReplaceOnChanges": true
                },
                "consensusClient": {
                    "type": "string",
                    "description": "The consensus client\nPossible values are: `CONSENSUS_CLIENT_UNSPECIFIED`, `LIGHTHOUSE`.\n",
                    "willReplaceOnChanges": true
                },
                "executionClient": {
                    "type": "string",
                    "description": "The execution client\nPossible values are: `EXECUTION_CLIENT_UNSPECIFIED`, `GETH`, `ERIGON`.\n",
                    "willReplaceOnChanges": true
                },
                "gethDetails": {
                    "$ref": "#/types/gcp:blockchainnodeengine/BlockchainNodesEthereumDetailsGethDetails:BlockchainNodesEthereumDetailsGethDetails",
                    "description": "User-provided key-value pairs\nStructure is documented below.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The Ethereum environment being accessed.\nPossible values are: `MAINNET`, `TESTNET_GOERLI_PRATER`, `TESTNET_SEPOLIA`.\n",
                    "willReplaceOnChanges": true
                },
                "nodeType": {
                    "type": "string",
                    "description": "The type of Ethereum node.\nPossible values are: `LIGHT`, `FULL`, `ARCHIVE`.\n",
                    "willReplaceOnChanges": true
                },
                "validatorConfig": {
                    "$ref": "#/types/gcp:blockchainnodeengine/BlockchainNodesEthereumDetailsValidatorConfig:BlockchainNodesEthereumDetailsValidatorConfig",
                    "description": "Configuration for validator-related parameters on the beacon client, and for any managed validator client.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "additionalEndpoints"
                    ]
                }
            }
        },
        "gcp:blockchainnodeengine/BlockchainNodesEthereumDetailsAdditionalEndpoint:BlockchainNodesEthereumDetailsAdditionalEndpoint": {
            "properties": {
                "beaconApiEndpoint": {
                    "type": "string",
                    "description": "The assigned URL for the node's Beacon API endpoint.\n"
                },
                "beaconPrometheusMetricsApiEndpoint": {
                    "type": "string",
                    "description": "The assigned URL for the node's Beacon Prometheus metrics endpoint.\n"
                },
                "executionClientPrometheusMetricsApiEndpoint": {
                    "type": "string",
                    "description": "The assigned URL for the node's execution client's Prometheus metrics endpoint.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "beaconApiEndpoint",
                        "beaconPrometheusMetricsApiEndpoint",
                        "executionClientPrometheusMetricsApiEndpoint"
                    ]
                }
            }
        },
        "gcp:blockchainnodeengine/BlockchainNodesEthereumDetailsGethDetails:BlockchainNodesEthereumDetailsGethDetails": {
            "properties": {
                "garbageCollectionMode": {
                    "type": "string",
                    "description": "Blockchain garbage collection modes. Only applicable when NodeType is FULL or ARCHIVE.\nPossible values are: `FULL`, `ARCHIVE`.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedEthereumDetailsAdditionalEndpoints\"\" pulumi-lang-dotnet=\"\"NestedEthereumDetailsAdditionalEndpoints\"\" pulumi-lang-go=\"\"nestedEthereumDetailsAdditionalEndpoints\"\" pulumi-lang-python=\"\"nested_ethereum_details_additional_endpoints\"\" pulumi-lang-yaml=\"\"nestedEthereumDetailsAdditionalEndpoints\"\" pulumi-lang-java=\"\"nestedEthereumDetailsAdditionalEndpoints\"\" pulumi-lang-hcl=\"\"nested_ethereum_details_additional_endpoints\"\"\u003e\"nestedEthereumDetailsAdditionalEndpoints\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`additionalEndpoints`\" pulumi-lang-dotnet=\"`AdditionalEndpoints`\" pulumi-lang-go=\"`additionalEndpoints`\" pulumi-lang-python=\"`additional_endpoints`\" pulumi-lang-yaml=\"`additionalEndpoints`\" pulumi-lang-java=\"`additionalEndpoints`\" pulumi-lang-hcl=\"`additional_endpoints`\"\u003e`additionalEndpoints`\u003c/span\u003e block contains:\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:blockchainnodeengine/BlockchainNodesEthereumDetailsValidatorConfig:BlockchainNodesEthereumDetailsValidatorConfig": {
            "properties": {
                "beaconFeeRecipient": {
                    "type": "string",
                    "description": "An Ethereum address which the beacon client will send fee rewards to if no recipient is configured in the validator client. See https://lighthouse-book.sigmaprime.io/suggested-fee-recipient.html or https://docs.prylabs.network/docs/execution-node/fee-recipient for examples of how this is used. Note that while this is often described as \"suggested\", as we run the execution node we can trust the execution node, and therefore this is considered enforced.\n"
                },
                "mevRelayUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "URLs for MEV-relay services to use for block building. When set, a managed MEV-boost service is configured on the beacon client.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/AuthorityAccessUrl:AuthorityAccessUrl": {
            "properties": {
                "caCertificateAccessUrl": {
                    "type": "string",
                    "description": "(Output)\nThe URL where this CertificateAuthority's CA certificate is published. This will only be\nset for CAs that have been activated.\n"
                },
                "crlAccessUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe URL where this CertificateAuthority's CRLs are published. This will only be set for\nCAs that have been activated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "caCertificateAccessUrl",
                        "crlAccessUrls"
                    ]
                }
            }
        },
        "gcp:certificateauthority/AuthorityConfig:AuthorityConfig": {
            "properties": {
                "subjectConfig": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigSubjectConfig:AuthorityConfigSubjectConfig",
                    "description": "Specifies some of the values in a certificate that are related to the subject.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "subjectKeyId": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigSubjectKeyId:AuthorityConfigSubjectKeyId",
                    "description": "When specified this provides a custom SKI to be used in the certificate. This should only be used to maintain a SKI of an existing CA originally created outside CA service, which was not generated using method (1) described in RFC 5280 section 4.2.1.2..\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "x509Config": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509Config:AuthorityConfigX509Config",
                    "description": "Describes how some of the technical X.509 fields in a certificate should be populated.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "subjectConfig",
                "x509Config"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigSubjectConfig:AuthorityConfigSubjectConfig": {
            "properties": {
                "subject": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigSubjectConfigSubject:AuthorityConfigSubjectConfigSubject",
                    "description": "Contains distinguished name fields such as the location and organization.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "subjectAltName": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigSubjectConfigSubjectAltName:AuthorityConfigSubjectConfigSubjectAltName",
                    "description": "The subject alternative name fields.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "subject"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigSubjectConfigSubject:AuthorityConfigSubjectConfigSubject": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "The common name of the distinguished name.\n",
                    "willReplaceOnChanges": true
                },
                "countryCode": {
                    "type": "string",
                    "description": "The country code of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "locality": {
                    "type": "string",
                    "description": "The locality or city of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "organization": {
                    "type": "string",
                    "description": "The organization of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "organizationalUnit": {
                    "type": "string",
                    "description": "The organizational unit of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "postalCode": {
                    "type": "string",
                    "description": "The postal code of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "province": {
                    "type": "string",
                    "description": "The province, territory, or regional state of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "streetAddress": {
                    "type": "string",
                    "description": "The street address of the subject.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "commonName"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigSubjectConfigSubjectAltName:AuthorityConfigSubjectConfigSubjectAltName": {
            "properties": {
                "dnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid, fully-qualified host names.\n",
                    "willReplaceOnChanges": true
                },
                "emailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid RFC 2822 E-mail addresses.\n",
                    "willReplaceOnChanges": true
                },
                "ipAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.\n",
                    "willReplaceOnChanges": true
                },
                "uris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid RFC 3986 URIs.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/AuthorityConfigSubjectKeyId:AuthorityConfigSubjectKeyId": {
            "properties": {
                "keyId": {
                    "type": "string",
                    "description": "The value of the KeyId in lowercase hexadecimal.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedConfigX509Config\"\" pulumi-lang-dotnet=\"\"NestedConfigX509Config\"\" pulumi-lang-go=\"\"nestedConfigX509Config\"\" pulumi-lang-python=\"\"nested_config_x509_config\"\" pulumi-lang-yaml=\"\"nestedConfigX509Config\"\" pulumi-lang-java=\"\"nestedConfigX509Config\"\" pulumi-lang-hcl=\"\"nested_config_x509_config\"\"\u003e\"nestedConfigX509Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`x509Config`\" pulumi-lang-dotnet=\"`X509Config`\" pulumi-lang-go=\"`x509Config`\" pulumi-lang-python=\"`x509_config`\" pulumi-lang-yaml=\"`x509Config`\" pulumi-lang-java=\"`x509Config`\" pulumi-lang-hcl=\"`x509_config`\"\u003e`x509Config`\u003c/span\u003e block supports:\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/AuthorityConfigX509Config:AuthorityConfigX509Config": {
            "properties": {
                "additionalExtensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigAdditionalExtension:AuthorityConfigX509ConfigAdditionalExtension"
                    },
                    "description": "Specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.\n",
                    "willReplaceOnChanges": true
                },
                "aiaOcspServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the\n\"Authority Information Access\" extension in the certificate.\n",
                    "willReplaceOnChanges": true
                },
                "caOptions": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigCaOptions:AuthorityConfigX509ConfigCaOptions",
                    "description": "Describes values that are relevant in a CA certificate.\n",
                    "willReplaceOnChanges": true
                },
                "keyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigKeyUsage:AuthorityConfigX509ConfigKeyUsage",
                    "description": "Indicates the intended use for keys that correspond to a certificate.\n",
                    "willReplaceOnChanges": true
                },
                "nameConstraints": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigNameConstraints:AuthorityConfigX509ConfigNameConstraints",
                    "description": "Describes the X.509 name constraints extension.\n",
                    "willReplaceOnChanges": true
                },
                "policyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigPolicyId:AuthorityConfigX509ConfigPolicyId"
                    },
                    "description": "Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "caOptions",
                "keyUsage"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigAdditionalExtension:AuthorityConfigX509ConfigAdditionalExtension": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not this extension is critical (i.e., if the client does not know how to\nhandle this extension, the client should consider this to be an error).\n",
                    "willReplaceOnChanges": true
                },
                "objectId": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigAdditionalExtensionObjectId:AuthorityConfigX509ConfigAdditionalExtensionObjectId",
                    "description": "Describes values that are relevant in a CA certificate.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "The value of this X.509 extension. A base64-encoded string.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "critical",
                "objectId",
                "value"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigAdditionalExtensionObjectId:AuthorityConfigX509ConfigAdditionalExtensionObjectId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigCaOptions:AuthorityConfigX509ConfigCaOptions": {
            "properties": {
                "isCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to true.\n",
                    "willReplaceOnChanges": true
                },
                "maxIssuerPathLength": {
                    "type": "integer",
                    "description": "Refers to the \"path length constraint\" in Basic Constraints extension. For a CA certificate, this value describes the depth of\nsubordinate CA certificates that are allowed. If this value is less than 0, the request will fail. Setting the value to 0\nrequires setting \u003cspan pulumi-lang-nodejs=\"`zeroMaxIssuerPathLength \" pulumi-lang-dotnet=\"`ZeroMaxIssuerPathLength \" pulumi-lang-go=\"`zeroMaxIssuerPathLength \" pulumi-lang-python=\"`zero_max_issuer_path_length \" pulumi-lang-yaml=\"`zeroMaxIssuerPathLength \" pulumi-lang-java=\"`zeroMaxIssuerPathLength \" pulumi-lang-hcl=\"`zero_max_issuer_path_length \"\u003e`zeroMaxIssuerPathLength \u003c/span\u003e= true`.\n",
                    "willReplaceOnChanges": true
                },
                "nonCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to false.\nIf both \u003cspan pulumi-lang-nodejs=\"`isCa`\" pulumi-lang-dotnet=\"`IsCa`\" pulumi-lang-go=\"`isCa`\" pulumi-lang-python=\"`is_ca`\" pulumi-lang-yaml=\"`isCa`\" pulumi-lang-java=\"`isCa`\" pulumi-lang-hcl=\"`is_ca`\"\u003e`isCa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`nonCa`\" pulumi-lang-dotnet=\"`NonCa`\" pulumi-lang-go=\"`nonCa`\" pulumi-lang-python=\"`non_ca`\" pulumi-lang-yaml=\"`nonCa`\" pulumi-lang-java=\"`nonCa`\" pulumi-lang-hcl=\"`non_ca`\"\u003e`nonCa`\u003c/span\u003e are unset, the extension will be omitted from the CA certificate.\n",
                    "willReplaceOnChanges": true
                },
                "zeroMaxIssuerPathLength": {
                    "type": "boolean",
                    "description": "When true, the \"path length constraint\" in Basic Constraints extension will be set to 0.\nIf both \u003cspan pulumi-lang-nodejs=\"`maxIssuerPathLength`\" pulumi-lang-dotnet=\"`MaxIssuerPathLength`\" pulumi-lang-go=\"`maxIssuerPathLength`\" pulumi-lang-python=\"`max_issuer_path_length`\" pulumi-lang-yaml=\"`maxIssuerPathLength`\" pulumi-lang-java=\"`maxIssuerPathLength`\" pulumi-lang-hcl=\"`max_issuer_path_length`\"\u003e`maxIssuerPathLength`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`zeroMaxIssuerPathLength`\" pulumi-lang-dotnet=\"`ZeroMaxIssuerPathLength`\" pulumi-lang-go=\"`zeroMaxIssuerPathLength`\" pulumi-lang-python=\"`zero_max_issuer_path_length`\" pulumi-lang-yaml=\"`zeroMaxIssuerPathLength`\" pulumi-lang-java=\"`zeroMaxIssuerPathLength`\" pulumi-lang-hcl=\"`zero_max_issuer_path_length`\"\u003e`zeroMaxIssuerPathLength`\u003c/span\u003e are unset,\nthe max path length will be omitted from the CA certificate.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "isCa"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigKeyUsage:AuthorityConfigX509ConfigKeyUsage": {
            "properties": {
                "baseKeyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigKeyUsageBaseKeyUsage:AuthorityConfigX509ConfigKeyUsageBaseKeyUsage",
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "extendedKeyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigKeyUsageExtendedKeyUsage:AuthorityConfigX509ConfigKeyUsageExtendedKeyUsage",
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "unknownExtendedKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/AuthorityConfigX509ConfigKeyUsageUnknownExtendedKeyUsage:AuthorityConfigX509ConfigKeyUsageUnknownExtendedKeyUsage"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "baseKeyUsage",
                "extendedKeyUsage"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigKeyUsageBaseKeyUsage:AuthorityConfigX509ConfigKeyUsageBaseKeyUsage": {
            "properties": {
                "certSign": {
                    "type": "boolean",
                    "description": "The key may be used to sign certificates.\n",
                    "willReplaceOnChanges": true
                },
                "contentCommitment": {
                    "type": "boolean",
                    "description": "The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".\n",
                    "willReplaceOnChanges": true
                },
                "crlSign": {
                    "type": "boolean",
                    "description": "The key may be used sign certificate revocation lists.\n",
                    "willReplaceOnChanges": true
                },
                "dataEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher data.\n",
                    "willReplaceOnChanges": true
                },
                "decipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to decipher only.\n",
                    "willReplaceOnChanges": true
                },
                "digitalSignature": {
                    "type": "boolean",
                    "description": "The key may be used for digital signatures.\n",
                    "willReplaceOnChanges": true
                },
                "encipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to encipher only.\n",
                    "willReplaceOnChanges": true
                },
                "keyAgreement": {
                    "type": "boolean",
                    "description": "The key may be used in a key agreement protocol.\n",
                    "willReplaceOnChanges": true
                },
                "keyEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher other keys.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigKeyUsageExtendedKeyUsage:AuthorityConfigX509ConfigKeyUsageExtendedKeyUsage": {
            "properties": {
                "clientAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.\n",
                    "willReplaceOnChanges": true
                },
                "codeSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".\n",
                    "willReplaceOnChanges": true
                },
                "emailProtection": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".\n",
                    "willReplaceOnChanges": true
                },
                "ocspSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".\n",
                    "willReplaceOnChanges": true
                },
                "serverAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.\n",
                    "willReplaceOnChanges": true
                },
                "timeStamping": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigKeyUsageUnknownExtendedKeyUsage:AuthorityConfigX509ConfigKeyUsageUnknownExtendedKeyUsage": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigNameConstraints:AuthorityConfigX509ConfigNameConstraints": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not the name constraints are marked critical.\n",
                    "willReplaceOnChanges": true
                },
                "excludedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains excluded DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n",
                    "willReplaceOnChanges": true
                },
                "excludedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n",
                    "willReplaceOnChanges": true
                },
                "excludedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n",
                    "willReplaceOnChanges": true
                },
                "excludedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n",
                    "willReplaceOnChanges": true
                },
                "permittedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains permitted DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n",
                    "willReplaceOnChanges": true
                },
                "permittedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n",
                    "willReplaceOnChanges": true
                },
                "permittedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n",
                    "willReplaceOnChanges": true
                },
                "permittedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "critical"
            ]
        },
        "gcp:certificateauthority/AuthorityConfigX509ConfigPolicyId:AuthorityConfigX509ConfigPolicyId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/AuthorityKeySpec:AuthorityKeySpec": {
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The algorithm to use for creating a managed Cloud KMS key for a for a simplified\nexperience. All managed keys will be have their ProtectionLevel as HSM.\nPossible values are: `SIGN_HASH_ALGORITHM_UNSPECIFIED`, `RSA_PSS_2048_SHA256`, `RSA_PSS_3072_SHA256`, `RSA_PSS_4096_SHA256`, `RSA_PKCS1_2048_SHA256`, `RSA_PKCS1_3072_SHA256`, `RSA_PKCS1_4096_SHA256`, `EC_P256_SHA256`, `EC_P384_SHA384`.\n",
                    "willReplaceOnChanges": true
                },
                "cloudKmsKeyVersion": {
                    "type": "string",
                    "description": "The resource name for an existing Cloud KMS CryptoKeyVersion in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/AuthoritySubordinateConfig:AuthoritySubordinateConfig": {
            "properties": {
                "certificateAuthority": {
                    "type": "string",
                    "description": "This can refer to a CertificateAuthority that was used to create a\nsubordinate CertificateAuthority. This field is used for information\nand usability purposes only. The resource name is in the format\n`projects/*/locations/*/caPools/*/certificateAuthorities/*`.\n"
                },
                "pemIssuerChain": {
                    "$ref": "#/types/gcp:certificateauthority/AuthoritySubordinateConfigPemIssuerChain:AuthoritySubordinateConfigPemIssuerChain",
                    "description": "Contains the PEM certificate chain for the issuers of this CertificateAuthority,\nbut not pem certificate for this CA itself.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "pemIssuerChain"
                    ]
                }
            }
        },
        "gcp:certificateauthority/AuthoritySubordinateConfigPemIssuerChain:AuthoritySubordinateConfigPemIssuerChain": {
            "properties": {
                "pemCertificates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Expected to be in leaf-to-root order according to RFC 5246.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/AuthorityUserDefinedAccessUrls:AuthorityUserDefinedAccessUrls": {
            "properties": {
                "aiaIssuingCertificateUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of URLs where this CertificateAuthority's CA certificate is published that is specified by users.\n"
                },
                "crlAccessUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of URLs where this CertificateAuthority's CRLs are published that is specified by users.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CaPoolEncryptionSpec:CaPoolEncryptionSpec": {
            "properties": {
                "cloudKmsKey": {
                    "type": "string",
                    "description": "The resource name for an existing Cloud KMS key in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CaPoolIamBindingCondition:CaPoolIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:certificateauthority/CaPoolIamMemberCondition:CaPoolIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicy:CaPoolIssuancePolicy": {
            "properties": {
                "allowedIssuanceModes": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyAllowedIssuanceModes:CaPoolIssuancePolicyAllowedIssuanceModes",
                    "description": "IssuanceModes specifies the allowed ways in which Certificates may be requested from this CaPool.\nStructure is documented below.\n"
                },
                "allowedKeyTypes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyAllowedKeyType:CaPoolIssuancePolicyAllowedKeyType"
                    },
                    "description": "If any AllowedKeyType is specified, then the certificate request's public key must match one of the key types listed here.\nOtherwise, any key may be used. You can specify only one key type of those listed here.\nStructure is documented below.\n"
                },
                "backdateDuration": {
                    "type": "string",
                    "description": "The duration to backdate all certificates issued from this CaPool. If not set, the\ncertificates will be issued with a\u003cspan pulumi-lang-nodejs=\" notBeforeTime \" pulumi-lang-dotnet=\" NotBeforeTime \" pulumi-lang-go=\" notBeforeTime \" pulumi-lang-python=\" not_before_time \" pulumi-lang-yaml=\" notBeforeTime \" pulumi-lang-java=\" notBeforeTime \" pulumi-lang-hcl=\" not_before_time \"\u003e notBeforeTime \u003c/span\u003eof the issuance time (i.e. the current\ntime). If set, the certificates will be issued with a\u003cspan pulumi-lang-nodejs=\" notBeforeTime \" pulumi-lang-dotnet=\" NotBeforeTime \" pulumi-lang-go=\" notBeforeTime \" pulumi-lang-python=\" not_before_time \" pulumi-lang-yaml=\" notBeforeTime \" pulumi-lang-java=\" notBeforeTime \" pulumi-lang-hcl=\" not_before_time \"\u003e notBeforeTime \u003c/span\u003eof the issuance\ntime minus the backdate_duration. The\u003cspan pulumi-lang-nodejs=\" notAfterTime \" pulumi-lang-dotnet=\" NotAfterTime \" pulumi-lang-go=\" notAfterTime \" pulumi-lang-python=\" not_after_time \" pulumi-lang-yaml=\" notAfterTime \" pulumi-lang-java=\" notAfterTime \" pulumi-lang-hcl=\" not_after_time \"\u003e notAfterTime \u003c/span\u003ewill be adjusted to preserve the\nrequested lifetime. The\u003cspan pulumi-lang-nodejs=\" backdateDuration \" pulumi-lang-dotnet=\" BackdateDuration \" pulumi-lang-go=\" backdateDuration \" pulumi-lang-python=\" backdate_duration \" pulumi-lang-yaml=\" backdateDuration \" pulumi-lang-java=\" backdateDuration \" pulumi-lang-hcl=\" backdate_duration \"\u003e backdateDuration \u003c/span\u003emust be less than or equal to 48 hours.\n"
                },
                "baselineValues": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValues:CaPoolIssuancePolicyBaselineValues",
                    "description": "A set of X.509 values that will be applied to all certificates issued through this CaPool. If a certificate request\nincludes conflicting values for the same properties, they will be overwritten by the values defined here. If a certificate\nrequest uses a CertificateTemplate that defines conflicting predefinedValues for the same properties, the certificate\nissuance request will fail.\nStructure is documented below.\n"
                },
                "identityConstraints": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyIdentityConstraints:CaPoolIssuancePolicyIdentityConstraints",
                    "description": "Describes constraints on identities that may appear in Certificates issued through this CaPool.\nIf this is omitted, then this CaPool will not add restrictions on a certificate's identity.\nStructure is documented below.\n"
                },
                "maximumLifetime": {
                    "type": "string",
                    "description": "The maximum lifetime allowed for issued Certificates. Note that if the issuing CertificateAuthority\nexpires before a Certificate's requested maximumLifetime, the effective lifetime will be explicitly truncated to match it.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyAllowedIssuanceModes:CaPoolIssuancePolicyAllowedIssuanceModes": {
            "properties": {
                "allowConfigBasedIssuance": {
                    "type": "boolean",
                    "description": "When true, allows callers to create Certificates by specifying a CertificateConfig.\n"
                },
                "allowCsrBasedIssuance": {
                    "type": "boolean",
                    "description": "When true, allows callers to create Certificates by specifying a CSR.\n"
                }
            },
            "type": "object",
            "required": [
                "allowConfigBasedIssuance",
                "allowCsrBasedIssuance"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyAllowedKeyType:CaPoolIssuancePolicyAllowedKeyType": {
            "properties": {
                "ellipticCurve": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyAllowedKeyTypeEllipticCurve:CaPoolIssuancePolicyAllowedKeyTypeEllipticCurve",
                    "description": "Represents an allowed Elliptic Curve key type.\nStructure is documented below.\n"
                },
                "rsa": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyAllowedKeyTypeRsa:CaPoolIssuancePolicyAllowedKeyTypeRsa",
                    "description": "Describes an RSA key that may be used in a Certificate issued from a CaPool.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyAllowedKeyTypeEllipticCurve:CaPoolIssuancePolicyAllowedKeyTypeEllipticCurve": {
            "properties": {
                "signatureAlgorithm": {
                    "type": "string",
                    "description": "The algorithm used.\nPossible values are: `ECDSA_P256`, `ECDSA_P384`, `EDDSA_25519`.\n"
                }
            },
            "type": "object",
            "required": [
                "signatureAlgorithm"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyAllowedKeyTypeRsa:CaPoolIssuancePolicyAllowedKeyTypeRsa": {
            "properties": {
                "maxModulusSize": {
                    "type": "string",
                    "description": "The maximum allowed RSA modulus size, in bits. If this is not set, or if set to zero, the\nservice will not enforce an explicit upper bound on RSA modulus sizes.\n"
                },
                "minModulusSize": {
                    "type": "string",
                    "description": "The minimum allowed RSA modulus size, in bits. If this is not set, or if set to zero, the\nservice-level min RSA modulus size will continue to apply.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValues:CaPoolIssuancePolicyBaselineValues": {
            "properties": {
                "additionalExtensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesAdditionalExtension:CaPoolIssuancePolicyBaselineValuesAdditionalExtension"
                    },
                    "description": "Specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.\nStructure is documented below.\n"
                },
                "aiaOcspServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the\n\"Authority Information Access\" extension in the certificate.\n"
                },
                "caOptions": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesCaOptions:CaPoolIssuancePolicyBaselineValuesCaOptions",
                    "description": "Describes values that are relevant in a CA certificate.\nStructure is documented below.\n"
                },
                "keyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesKeyUsage:CaPoolIssuancePolicyBaselineValuesKeyUsage",
                    "description": "Indicates the intended use for keys that correspond to a certificate.\nStructure is documented below.\n"
                },
                "nameConstraints": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesNameConstraints:CaPoolIssuancePolicyBaselineValuesNameConstraints",
                    "description": "Describes the X.509 name constraints extension.\nStructure is documented below.\n"
                },
                "policyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesPolicyId:CaPoolIssuancePolicyBaselineValuesPolicyId"
                    },
                    "description": "Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "caOptions",
                "keyUsage"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesAdditionalExtension:CaPoolIssuancePolicyBaselineValuesAdditionalExtension": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not this extension is critical (i.e., if the client does not know how to\nhandle this extension, the client should consider this to be an error).\n"
                },
                "objectId": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectId:CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectId",
                    "description": "Describes values that are relevant in a CA certificate.\nStructure is documented below.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of this X.509 extension. A base64-encoded string.\n"
                }
            },
            "type": "object",
            "required": [
                "critical",
                "objectId",
                "value"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectId:CaPoolIssuancePolicyBaselineValuesAdditionalExtensionObjectId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesCaOptions:CaPoolIssuancePolicyBaselineValuesCaOptions": {
            "properties": {
                "isCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to true.\n"
                },
                "maxIssuerPathLength": {
                    "type": "integer",
                    "description": "Refers to the \"path length constraint\" in Basic Constraints extension. For a CA certificate, this value describes the depth of\nsubordinate CA certificates that are allowed. If this value is less than 0, the request will fail.\n"
                },
                "nonCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to false.\nIf both \u003cspan pulumi-lang-nodejs=\"`isCa`\" pulumi-lang-dotnet=\"`IsCa`\" pulumi-lang-go=\"`isCa`\" pulumi-lang-python=\"`is_ca`\" pulumi-lang-yaml=\"`isCa`\" pulumi-lang-java=\"`isCa`\" pulumi-lang-hcl=\"`is_ca`\"\u003e`isCa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`nonCa`\" pulumi-lang-dotnet=\"`NonCa`\" pulumi-lang-go=\"`nonCa`\" pulumi-lang-python=\"`non_ca`\" pulumi-lang-yaml=\"`nonCa`\" pulumi-lang-java=\"`nonCa`\" pulumi-lang-hcl=\"`non_ca`\"\u003e`nonCa`\u003c/span\u003e are unset, the extension will be omitted from the CA certificate.\n"
                },
                "zeroMaxIssuerPathLength": {
                    "type": "boolean",
                    "description": "When true, the \"path length constraint\" in Basic Constraints extension will be set to 0.\nif both \u003cspan pulumi-lang-nodejs=\"`maxIssuerPathLength`\" pulumi-lang-dotnet=\"`MaxIssuerPathLength`\" pulumi-lang-go=\"`maxIssuerPathLength`\" pulumi-lang-python=\"`max_issuer_path_length`\" pulumi-lang-yaml=\"`maxIssuerPathLength`\" pulumi-lang-java=\"`maxIssuerPathLength`\" pulumi-lang-hcl=\"`max_issuer_path_length`\"\u003e`maxIssuerPathLength`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`zeroMaxIssuerPathLength`\" pulumi-lang-dotnet=\"`ZeroMaxIssuerPathLength`\" pulumi-lang-go=\"`zeroMaxIssuerPathLength`\" pulumi-lang-python=\"`zero_max_issuer_path_length`\" pulumi-lang-yaml=\"`zeroMaxIssuerPathLength`\" pulumi-lang-java=\"`zeroMaxIssuerPathLength`\" pulumi-lang-hcl=\"`zero_max_issuer_path_length`\"\u003e`zeroMaxIssuerPathLength`\u003c/span\u003e are unset,\nthe max path length will be omitted from the CA certificate.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesKeyUsage:CaPoolIssuancePolicyBaselineValuesKeyUsage": {
            "properties": {
                "baseKeyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsage:CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsage",
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n"
                },
                "extendedKeyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsage:CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsage",
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n"
                },
                "unknownExtendedKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesKeyUsageUnknownExtendedKeyUsage:CaPoolIssuancePolicyBaselineValuesKeyUsageUnknownExtendedKeyUsage"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "baseKeyUsage",
                "extendedKeyUsage"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsage:CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsage": {
            "properties": {
                "certSign": {
                    "type": "boolean",
                    "description": "The key may be used to sign certificates.\n"
                },
                "contentCommitment": {
                    "type": "boolean",
                    "description": "The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".\n"
                },
                "crlSign": {
                    "type": "boolean",
                    "description": "The key may be used sign certificate revocation lists.\n"
                },
                "dataEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher data.\n"
                },
                "decipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to decipher only.\n"
                },
                "digitalSignature": {
                    "type": "boolean",
                    "description": "The key may be used for digital signatures.\n"
                },
                "encipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to encipher only.\n"
                },
                "keyAgreement": {
                    "type": "boolean",
                    "description": "The key may be used in a key agreement protocol.\n"
                },
                "keyEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher other keys.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsage:CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsage": {
            "properties": {
                "clientAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.\n"
                },
                "codeSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".\n"
                },
                "emailProtection": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".\n"
                },
                "ocspSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".\n"
                },
                "serverAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.\n"
                },
                "timeStamping": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesKeyUsageUnknownExtendedKeyUsage:CaPoolIssuancePolicyBaselineValuesKeyUsageUnknownExtendedKeyUsage": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesNameConstraints:CaPoolIssuancePolicyBaselineValuesNameConstraints": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not the name constraints are marked critical.\n"
                },
                "excludedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains excluded DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n"
                },
                "excludedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n"
                },
                "excludedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n"
                },
                "excludedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n"
                },
                "permittedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains permitted DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n"
                },
                "permittedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n"
                },
                "permittedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n"
                },
                "permittedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n"
                }
            },
            "type": "object",
            "required": [
                "critical"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyBaselineValuesPolicyId:CaPoolIssuancePolicyBaselineValuesPolicyId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyIdentityConstraints:CaPoolIssuancePolicyIdentityConstraints": {
            "properties": {
                "allowSubjectAltNamesPassthrough": {
                    "type": "boolean",
                    "description": "If this is set, the SubjectAltNames extension may be copied from a certificate request into the signed certificate.\nOtherwise, the requested SubjectAltNames will be discarded.\n"
                },
                "allowSubjectPassthrough": {
                    "type": "boolean",
                    "description": "If this is set, the Subject field may be copied from a certificate request into the signed certificate.\nOtherwise, the requested Subject will be discarded.\n"
                },
                "celExpression": {
                    "$ref": "#/types/gcp:certificateauthority/CaPoolIssuancePolicyIdentityConstraintsCelExpression:CaPoolIssuancePolicyIdentityConstraintsCelExpression",
                    "description": "A CEL expression that may be used to validate the resolved X.509 Subject and/or Subject Alternative Name before a\ncertificate is signed. To see the full allowed syntax and some examples,\nsee https://cloud.google.com/certificate-authority-service/docs/cel-guide\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "allowSubjectAltNamesPassthrough",
                "allowSubjectPassthrough"
            ]
        },
        "gcp:certificateauthority/CaPoolIssuancePolicyIdentityConstraintsCelExpression:CaPoolIssuancePolicyIdentityConstraintsCelExpression": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:certificateauthority/CaPoolPublishingOptions:CaPoolPublishingOptions": {
            "properties": {
                "encodingFormat": {
                    "type": "string",
                    "description": "Specifies the encoding format of each CertificateAuthority's CA\ncertificate and CRLs. If this is omitted, CA certificates and CRLs\nwill be published in PEM.\nPossible values are: `PEM`, `DER`.\n"
                },
                "publishCaCert": {
                    "type": "boolean",
                    "description": "When true, publishes each CertificateAuthority's CA certificate and includes its URL in the \"Authority Information Access\"\nX.509 extension in all issued Certificates. If this is false, the CA certificate will not be published and the corresponding\nX.509 extension will not be written in issued certificates.\n"
                },
                "publishCrl": {
                    "type": "boolean",
                    "description": "When true, publishes each CertificateAuthority's CRL and includes its URL in the \"CRL Distribution Points\" X.509 extension\nin all issued Certificates. If this is false, CRLs will not be published and the corresponding X.509 extension will not\nbe written in issued certificates. CRLs will expire 7 days from their creation. However, we will rebuild daily. CRLs are\nalso rebuilt shortly after a certificate is revoked.\n"
                }
            },
            "type": "object",
            "required": [
                "publishCaCert",
                "publishCrl"
            ]
        },
        "gcp:certificateauthority/CertificateCertificateDescription:CertificateCertificateDescription": {
            "properties": {
                "aiaIssuingCertificateUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nDescribes lists of issuer CA certificate URLs that appear in the \"Authority Information Access\" extension in the certificate.\n"
                },
                "authorityKeyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionAuthorityKeyId:CertificateCertificateDescriptionAuthorityKeyId"
                    },
                    "description": "(Output)\nIdentifies the subjectKeyId of the parent certificate, per https://tools.ietf.org/html/rfc5280#section-4.2.1.1\nStructure is documented below.\n"
                },
                "certFingerprints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionCertFingerprint:CertificateCertificateDescriptionCertFingerprint"
                    },
                    "description": "(Output)\nThe hash of the x.509 certificate.\nStructure is documented below.\n"
                },
                "crlDistributionPoints": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nDescribes a list of locations to obtain CRL information, i.e. the DistributionPoint.fullName described by https://tools.ietf.org/html/rfc5280#section-4.2.1.13\n"
                },
                "publicKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionPublicKey:CertificateCertificateDescriptionPublicKey"
                    },
                    "description": "(Output)\nA PublicKey describes a public key.\nStructure is documented below.\n"
                },
                "subjectDescriptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescription:CertificateCertificateDescriptionSubjectDescription"
                    },
                    "description": "(Output)\nDescribes some of the values in a certificate that are related to the subject and lifetime.\nStructure is documented below.\n"
                },
                "subjectKeyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionSubjectKeyId:CertificateCertificateDescriptionSubjectKeyId"
                    },
                    "description": "(Output)\nProvides a means of identifiying certificates that contain a particular public key, per https://tools.ietf.org/html/rfc5280#section-4.2.1.2.\nStructure is documented below.\n"
                },
                "x509Descriptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509Description:CertificateCertificateDescriptionX509Description"
                    },
                    "description": "(Output)\nA structured description of the issued X.509 certificate.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "aiaIssuingCertificateUrls",
                        "authorityKeyIds",
                        "certFingerprints",
                        "crlDistributionPoints",
                        "publicKeys",
                        "subjectDescriptions",
                        "subjectKeyIds",
                        "x509Descriptions"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionAuthorityKeyId:CertificateCertificateDescriptionAuthorityKeyId": {
            "properties": {
                "keyId": {
                    "type": "string",
                    "description": "(Output)\nOptional. The value of this KeyId encoded in lowercase hexadecimal. This is most likely the 160 bit SHA-1 hash of the public key.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "keyId"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionCertFingerprint:CertificateCertificateDescriptionCertFingerprint": {
            "properties": {
                "sha256Hash": {
                    "type": "string",
                    "description": "(Output)\nThe SHA 256 hash, encoded in hexadecimal, of the DER x509 certificate.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256Hash"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionPublicKey:CertificateCertificateDescriptionPublicKey": {
            "properties": {
                "format": {
                    "type": "string",
                    "description": "The format of the public key. Currently, only PEM format is supported.\nPossible values are: `KEY_TYPE_UNSPECIFIED`, `PEM`.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective 'KeyType' value. When this is generated by the service, it will always be an RFC 5280 SubjectPublicKeyInfo structure containing an algorithm identifier and a key. A base64-encoded string.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "format",
                        "key"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescription:CertificateCertificateDescriptionSubjectDescription": {
            "properties": {
                "hexSerialNumber": {
                    "type": "string",
                    "description": "(Output)\nThe serial number encoded in lowercase hexadecimal.\n"
                },
                "lifetime": {
                    "type": "string",
                    "description": "The desired lifetime of the CA certificate. Used to create the \"notBeforeTime\" and\n\"notAfterTime\" fields inside an X.509 certificate. A duration in seconds with up to nine\nfractional digits, terminated by 's'. Example: \"3.5s\".\n"
                },
                "notAfterTime": {
                    "type": "string",
                    "description": "(Output)\nThe time at which the certificate expires.\n"
                },
                "notBeforeTime": {
                    "type": "string",
                    "description": "(Output)\nThe time at which the certificate becomes valid.\n"
                },
                "subjectAltNames": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescriptionSubjectAltName:CertificateCertificateDescriptionSubjectDescriptionSubjectAltName"
                    },
                    "description": "(Output)\nThe subject alternative name fields.\nStructure is documented below.\n"
                },
                "subjects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescriptionSubject:CertificateCertificateDescriptionSubjectDescriptionSubject"
                    },
                    "description": "(Output)\nContains distinguished name fields such as the location and organization.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "hexSerialNumber",
                        "lifetime",
                        "notAfterTime",
                        "notBeforeTime",
                        "subjectAltNames",
                        "subjects"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescriptionSubject:CertificateCertificateDescriptionSubjectDescriptionSubject": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "The common name of the distinguished name.\n"
                },
                "countryCode": {
                    "type": "string",
                    "description": "The country code of the subject.\n"
                },
                "locality": {
                    "type": "string",
                    "description": "The locality or city of the subject.\n"
                },
                "organization": {
                    "type": "string",
                    "description": "The organization of the subject.\n"
                },
                "organizationalUnit": {
                    "type": "string",
                    "description": "The organizational unit of the subject.\n"
                },
                "postalCode": {
                    "type": "string",
                    "description": "The postal code of the subject.\n"
                },
                "province": {
                    "type": "string",
                    "description": "The province, territory, or regional state of the subject.\n"
                },
                "streetAddress": {
                    "type": "string",
                    "description": "The street address of the subject.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "commonName",
                        "countryCode",
                        "locality",
                        "organization",
                        "organizationalUnit",
                        "postalCode",
                        "province",
                        "streetAddress"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescriptionSubjectAltName:CertificateCertificateDescriptionSubjectDescriptionSubjectAltName": {
            "properties": {
                "customSans": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSan:CertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSan"
                    },
                    "description": "(Output)\nContains additional subject alternative name values.\nStructure is documented below.\n"
                },
                "dnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid, fully-qualified host names.\n"
                },
                "emailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid RFC 2822 E-mail addresses.\n"
                },
                "ipAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.\n"
                },
                "uris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid RFC 3986 URIs.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "customSans",
                        "dnsNames",
                        "emailAddresses",
                        "ipAddresses",
                        "uris"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSan:CertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSan": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "(Output)\nIndicates whether or not the name constraints are marked critical.\n"
                },
                "obectIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSanObectId:CertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSanObectId"
                    },
                    "description": "(Output)\nDescribes how some of the technical fields in a certificate should be populated.\nStructure is documented below.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of this X.509 extension. A base64-encoded string.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "critical",
                        "obectIds",
                        "value"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSanObectId:CertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSanObectId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "(Output)\nAn ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "objectIdPaths"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionSubjectKeyId:CertificateCertificateDescriptionSubjectKeyId": {
            "properties": {
                "keyId": {
                    "type": "string",
                    "description": "The value of the KeyId in lowercase hexadecimal.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "keyId"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509Description:CertificateCertificateDescriptionX509Description": {
            "properties": {
                "additionalExtensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionAdditionalExtension:CertificateCertificateDescriptionX509DescriptionAdditionalExtension"
                    },
                    "description": "(Output)\nDescribes custom X.509 extensions.\nStructure is documented below.\n"
                },
                "aiaOcspServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nDescribes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the\n\"Authority Information Access\" extension in the certificate.\n"
                },
                "caOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionCaOption:CertificateCertificateDescriptionX509DescriptionCaOption"
                    },
                    "description": "(Output)\nDescribes values that are relevant in a CA certificate.\nStructure is documented below.\n"
                },
                "keyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionKeyUsage:CertificateCertificateDescriptionX509DescriptionKeyUsage"
                    },
                    "description": "(Output)\nIndicates the intended use for keys that correspond to a certificate.\nStructure is documented below.\n"
                },
                "nameConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionNameConstraint:CertificateCertificateDescriptionX509DescriptionNameConstraint"
                    },
                    "description": "(Output)\nDescribes the X.509 name constraints extension.\nStructure is documented below.\n"
                },
                "policyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionPolicyId:CertificateCertificateDescriptionX509DescriptionPolicyId"
                    },
                    "description": "(Output)\nDescribes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "additionalExtensions",
                        "aiaOcspServers",
                        "caOptions",
                        "keyUsages",
                        "nameConstraints",
                        "policyIds"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionAdditionalExtension:CertificateCertificateDescriptionX509DescriptionAdditionalExtension": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not this extension is critical (i.e., if the client does not know how to\nhandle this extension, the client should consider this to be an error).\n"
                },
                "objectIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionAdditionalExtensionObjectId:CertificateCertificateDescriptionX509DescriptionAdditionalExtensionObjectId"
                    },
                    "description": "Describes values that are relevant in a CA certificate.\nStructure is documented below.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of this X.509 extension. A base64-encoded string.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "critical",
                        "objectIds"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionAdditionalExtensionObjectId:CertificateCertificateDescriptionX509DescriptionAdditionalExtensionObjectId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "objectIdPaths"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionCaOption:CertificateCertificateDescriptionX509DescriptionCaOption": {
            "properties": {
                "isCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to true.\n"
                },
                "maxIssuerPathLength": {
                    "type": "integer",
                    "description": "Refers to the \"path length constraint\" in Basic Constraints extension. For a CA certificate, this value describes the depth of\nsubordinate CA certificates that are allowed. If this value is less than 0, the request will fail.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "isCa",
                        "maxIssuerPathLength"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionKeyUsage:CertificateCertificateDescriptionX509DescriptionKeyUsage": {
            "properties": {
                "baseKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage:CertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage"
                    },
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n"
                },
                "extendedKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage:CertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage"
                    },
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n"
                },
                "unknownExtendedKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsage:CertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsage"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "baseKeyUsages",
                        "extendedKeyUsages",
                        "unknownExtendedKeyUsages"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage:CertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage": {
            "properties": {
                "certSign": {
                    "type": "boolean",
                    "description": "The key may be used to sign certificates.\n"
                },
                "contentCommitment": {
                    "type": "boolean",
                    "description": "The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".\n"
                },
                "crlSign": {
                    "type": "boolean",
                    "description": "The key may be used sign certificate revocation lists.\n"
                },
                "dataEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher data.\n"
                },
                "decipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to decipher only.\n"
                },
                "digitalSignature": {
                    "type": "boolean",
                    "description": "The key may be used for digital signatures.\n"
                },
                "encipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to encipher only.\n"
                },
                "keyAgreement": {
                    "type": "boolean",
                    "description": "The key may be used in a key agreement protocol.\n"
                },
                "keyEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher other keys.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "certSign",
                        "contentCommitment",
                        "crlSign",
                        "dataEncipherment",
                        "decipherOnly",
                        "digitalSignature",
                        "encipherOnly",
                        "keyAgreement",
                        "keyEncipherment"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage:CertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage": {
            "properties": {
                "clientAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.\n"
                },
                "codeSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".\n"
                },
                "emailProtection": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".\n"
                },
                "ocspSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".\n"
                },
                "serverAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.\n"
                },
                "timeStamping": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clientAuth",
                        "codeSigning",
                        "emailProtection",
                        "ocspSigning",
                        "serverAuth",
                        "timeStamping"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsage:CertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsage": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "objectIdPaths"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionNameConstraint:CertificateCertificateDescriptionX509DescriptionNameConstraint": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not the name constraints are marked critical.\n"
                },
                "excludedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains excluded DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n"
                },
                "excludedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n"
                },
                "excludedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n"
                },
                "excludedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n"
                },
                "permittedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains permitted DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n"
                },
                "permittedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n"
                },
                "permittedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n"
                },
                "permittedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "critical",
                        "excludedDnsNames",
                        "excludedEmailAddresses",
                        "excludedIpRanges",
                        "excludedUris",
                        "permittedDnsNames",
                        "permittedEmailAddresses",
                        "permittedIpRanges",
                        "permittedUris"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateCertificateDescriptionX509DescriptionPolicyId:CertificateCertificateDescriptionX509DescriptionPolicyId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "objectIdPaths"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateConfig:CertificateConfig": {
            "properties": {
                "publicKey": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigPublicKey:CertificateConfigPublicKey",
                    "description": "A PublicKey describes a public key.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedConfigX509Config\"\" pulumi-lang-dotnet=\"\"NestedConfigX509Config\"\" pulumi-lang-go=\"\"nestedConfigX509Config\"\" pulumi-lang-python=\"\"nested_config_x509_config\"\" pulumi-lang-yaml=\"\"nestedConfigX509Config\"\" pulumi-lang-java=\"\"nestedConfigX509Config\"\" pulumi-lang-hcl=\"\"nested_config_x509_config\"\"\u003e\"nestedConfigX509Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`x509Config`\" pulumi-lang-dotnet=\"`X509Config`\" pulumi-lang-go=\"`x509Config`\" pulumi-lang-python=\"`x509_config`\" pulumi-lang-yaml=\"`x509Config`\" pulumi-lang-java=\"`x509Config`\" pulumi-lang-hcl=\"`x509_config`\"\u003e`x509Config`\u003c/span\u003e block supports:\n",
                    "willReplaceOnChanges": true
                },
                "subjectConfig": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigSubjectConfig:CertificateConfigSubjectConfig",
                    "description": "Specifies some of the values in a certificate that are related to the subject.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "subjectKeyId": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigSubjectKeyId:CertificateConfigSubjectKeyId",
                    "description": "When specified this provides a custom SKI to be used in the certificate. This should only be used to maintain a SKI of an existing CA originally created outside CA service, which was not generated using method (1) described in RFC 5280 section 4.2.1.2..\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "x509Config": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509Config:CertificateConfigX509Config",
                    "description": "Describes how some of the technical X.509 fields in a certificate should be populated.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "publicKey",
                "subjectConfig",
                "x509Config"
            ]
        },
        "gcp:certificateauthority/CertificateConfigPublicKey:CertificateConfigPublicKey": {
            "properties": {
                "format": {
                    "type": "string",
                    "description": "The format of the public key. Currently, only PEM format is supported.\nPossible values are: `KEY_TYPE_UNSPECIFIED`, `PEM`.\n",
                    "willReplaceOnChanges": true
                },
                "key": {
                    "type": "string",
                    "description": "Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective 'KeyType' value. When this is generated by the service, it will always be an RFC 5280 SubjectPublicKeyInfo structure containing an algorithm identifier and a key. A base64-encoded string.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "format"
            ]
        },
        "gcp:certificateauthority/CertificateConfigSubjectConfig:CertificateConfigSubjectConfig": {
            "properties": {
                "subject": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigSubjectConfigSubject:CertificateConfigSubjectConfigSubject",
                    "description": "Contains distinguished name fields such as the location and organization.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "subjectAltName": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigSubjectConfigSubjectAltName:CertificateConfigSubjectConfigSubjectAltName",
                    "description": "The subject alternative name fields.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "subject"
            ]
        },
        "gcp:certificateauthority/CertificateConfigSubjectConfigSubject:CertificateConfigSubjectConfigSubject": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "The common name of the distinguished name.\n",
                    "willReplaceOnChanges": true
                },
                "countryCode": {
                    "type": "string",
                    "description": "The country code of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "locality": {
                    "type": "string",
                    "description": "The locality or city of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "organization": {
                    "type": "string",
                    "description": "The organization of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "organizationalUnit": {
                    "type": "string",
                    "description": "The organizational unit of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "postalCode": {
                    "type": "string",
                    "description": "The postal code of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "province": {
                    "type": "string",
                    "description": "The province, territory, or regional state of the subject.\n",
                    "willReplaceOnChanges": true
                },
                "streetAddress": {
                    "type": "string",
                    "description": "The street address of the subject.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "commonName",
                "organization"
            ]
        },
        "gcp:certificateauthority/CertificateConfigSubjectConfigSubjectAltName:CertificateConfigSubjectConfigSubjectAltName": {
            "properties": {
                "dnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid, fully-qualified host names.\n",
                    "willReplaceOnChanges": true
                },
                "emailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid RFC 2822 E-mail addresses.\n",
                    "willReplaceOnChanges": true
                },
                "ipAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.\n",
                    "willReplaceOnChanges": true
                },
                "uris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid RFC 3986 URIs.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateConfigSubjectKeyId:CertificateConfigSubjectKeyId": {
            "properties": {
                "keyId": {
                    "type": "string",
                    "description": "The value of the KeyId in lowercase hexadecimal.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateConfigX509Config:CertificateConfigX509Config": {
            "properties": {
                "additionalExtensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigAdditionalExtension:CertificateConfigX509ConfigAdditionalExtension"
                    },
                    "description": "(Output)\nDescribes custom X.509 extensions.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "aiaOcspServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nDescribes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the\n\"Authority Information Access\" extension in the certificate.\n",
                    "willReplaceOnChanges": true
                },
                "caOptions": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigCaOptions:CertificateConfigX509ConfigCaOptions",
                    "description": "(Output)\nDescribes values that are relevant in a CA certificate.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "keyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigKeyUsage:CertificateConfigX509ConfigKeyUsage",
                    "description": "(Output)\nIndicates the intended use for keys that correspond to a certificate.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "nameConstraints": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigNameConstraints:CertificateConfigX509ConfigNameConstraints",
                    "description": "(Output)\nDescribes the X.509 name constraints extension.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "policyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigPolicyId:CertificateConfigX509ConfigPolicyId"
                    },
                    "description": "(Output)\nDescribes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "keyUsage"
            ]
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigAdditionalExtension:CertificateConfigX509ConfigAdditionalExtension": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not this extension is critical (i.e., if the client does not know how to\nhandle this extension, the client should consider this to be an error).\n",
                    "willReplaceOnChanges": true
                },
                "objectId": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigAdditionalExtensionObjectId:CertificateConfigX509ConfigAdditionalExtensionObjectId",
                    "description": "Describes values that are relevant in a CA certificate.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "The value of this X.509 extension. A base64-encoded string.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "critical",
                "objectId",
                "value"
            ]
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigAdditionalExtensionObjectId:CertificateConfigX509ConfigAdditionalExtensionObjectId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigCaOptions:CertificateConfigX509ConfigCaOptions": {
            "properties": {
                "isCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to true.\n",
                    "willReplaceOnChanges": true
                },
                "maxIssuerPathLength": {
                    "type": "integer",
                    "description": "Refers to the \"path length constraint\" in Basic Constraints extension. For a CA certificate, this value describes the depth of\nsubordinate CA certificates that are allowed. If this value is less than 0, the request will fail.\n",
                    "willReplaceOnChanges": true
                },
                "nonCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to false.\nIf both \u003cspan pulumi-lang-nodejs=\"`isCa`\" pulumi-lang-dotnet=\"`IsCa`\" pulumi-lang-go=\"`isCa`\" pulumi-lang-python=\"`is_ca`\" pulumi-lang-yaml=\"`isCa`\" pulumi-lang-java=\"`isCa`\" pulumi-lang-hcl=\"`is_ca`\"\u003e`isCa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`nonCa`\" pulumi-lang-dotnet=\"`NonCa`\" pulumi-lang-go=\"`nonCa`\" pulumi-lang-python=\"`non_ca`\" pulumi-lang-yaml=\"`nonCa`\" pulumi-lang-java=\"`nonCa`\" pulumi-lang-hcl=\"`non_ca`\"\u003e`nonCa`\u003c/span\u003e are unset, the extension will be omitted from the CA certificate.\n",
                    "willReplaceOnChanges": true
                },
                "zeroMaxIssuerPathLength": {
                    "type": "boolean",
                    "description": "When true, the \"path length constraint\" in Basic Constraints extension will be set to 0.\nif both \u003cspan pulumi-lang-nodejs=\"`maxIssuerPathLength`\" pulumi-lang-dotnet=\"`MaxIssuerPathLength`\" pulumi-lang-go=\"`maxIssuerPathLength`\" pulumi-lang-python=\"`max_issuer_path_length`\" pulumi-lang-yaml=\"`maxIssuerPathLength`\" pulumi-lang-java=\"`maxIssuerPathLength`\" pulumi-lang-hcl=\"`max_issuer_path_length`\"\u003e`maxIssuerPathLength`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`zeroMaxIssuerPathLength`\" pulumi-lang-dotnet=\"`ZeroMaxIssuerPathLength`\" pulumi-lang-go=\"`zeroMaxIssuerPathLength`\" pulumi-lang-python=\"`zero_max_issuer_path_length`\" pulumi-lang-yaml=\"`zeroMaxIssuerPathLength`\" pulumi-lang-java=\"`zeroMaxIssuerPathLength`\" pulumi-lang-hcl=\"`zero_max_issuer_path_length`\"\u003e`zeroMaxIssuerPathLength`\u003c/span\u003e are unset,\nthe max path length will be omitted from the CA certificate.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigKeyUsage:CertificateConfigX509ConfigKeyUsage": {
            "properties": {
                "baseKeyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigKeyUsageBaseKeyUsage:CertificateConfigX509ConfigKeyUsageBaseKeyUsage",
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "extendedKeyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigKeyUsageExtendedKeyUsage:CertificateConfigX509ConfigKeyUsageExtendedKeyUsage",
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "unknownExtendedKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsage:CertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsage"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "baseKeyUsage",
                "extendedKeyUsage"
            ]
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigKeyUsageBaseKeyUsage:CertificateConfigX509ConfigKeyUsageBaseKeyUsage": {
            "properties": {
                "certSign": {
                    "type": "boolean",
                    "description": "The key may be used to sign certificates.\n",
                    "willReplaceOnChanges": true
                },
                "contentCommitment": {
                    "type": "boolean",
                    "description": "The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".\n",
                    "willReplaceOnChanges": true
                },
                "crlSign": {
                    "type": "boolean",
                    "description": "The key may be used sign certificate revocation lists.\n",
                    "willReplaceOnChanges": true
                },
                "dataEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher data.\n",
                    "willReplaceOnChanges": true
                },
                "decipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to decipher only.\n",
                    "willReplaceOnChanges": true
                },
                "digitalSignature": {
                    "type": "boolean",
                    "description": "The key may be used for digital signatures.\n",
                    "willReplaceOnChanges": true
                },
                "encipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to encipher only.\n",
                    "willReplaceOnChanges": true
                },
                "keyAgreement": {
                    "type": "boolean",
                    "description": "The key may be used in a key agreement protocol.\n",
                    "willReplaceOnChanges": true
                },
                "keyEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher other keys.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigKeyUsageExtendedKeyUsage:CertificateConfigX509ConfigKeyUsageExtendedKeyUsage": {
            "properties": {
                "clientAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.\n",
                    "willReplaceOnChanges": true
                },
                "codeSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".\n",
                    "willReplaceOnChanges": true
                },
                "emailProtection": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".\n",
                    "willReplaceOnChanges": true
                },
                "ocspSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".\n",
                    "willReplaceOnChanges": true
                },
                "serverAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.\n",
                    "willReplaceOnChanges": true
                },
                "timeStamping": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsage:CertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsage": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigNameConstraints:CertificateConfigX509ConfigNameConstraints": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not the name constraints are marked critical.\n",
                    "willReplaceOnChanges": true
                },
                "excludedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains excluded DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n",
                    "willReplaceOnChanges": true
                },
                "excludedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n",
                    "willReplaceOnChanges": true
                },
                "excludedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n",
                    "willReplaceOnChanges": true
                },
                "excludedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n",
                    "willReplaceOnChanges": true
                },
                "permittedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains permitted DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n",
                    "willReplaceOnChanges": true
                },
                "permittedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n",
                    "willReplaceOnChanges": true
                },
                "permittedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n",
                    "willReplaceOnChanges": true
                },
                "permittedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "critical"
            ]
        },
        "gcp:certificateauthority/CertificateConfigX509ConfigPolicyId:CertificateConfigX509ConfigPolicyId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CertificateRevocationDetail:CertificateRevocationDetail": {
            "properties": {
                "revocationState": {
                    "type": "string",
                    "description": "(Output)\nIndicates why a Certificate was revoked.\n"
                },
                "revocationTime": {
                    "type": "string",
                    "description": "(Output)\nThe time at which this Certificate was revoked.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "revocationState",
                        "revocationTime"
                    ]
                }
            }
        },
        "gcp:certificateauthority/CertificateTemplateIamBindingCondition:CertificateTemplateIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:certificateauthority/CertificateTemplateIamMemberCondition:CertificateTemplateIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:certificateauthority/CertificateTemplateIdentityConstraints:CertificateTemplateIdentityConstraints": {
            "properties": {
                "allowSubjectAltNamesPassthrough": {
                    "type": "boolean",
                    "description": "Required. If this is true, the SubjectAltNames extension may be copied from a certificate request into the signed certificate. Otherwise, the requested SubjectAltNames will be discarded.\n"
                },
                "allowSubjectPassthrough": {
                    "type": "boolean",
                    "description": "Required. If this is true, the Subject field may be copied from a certificate request into the signed certificate. Otherwise, the requested Subject will be discarded.\n"
                },
                "celExpression": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateTemplateIdentityConstraintsCelExpression:CertificateTemplateIdentityConstraintsCelExpression",
                    "description": "Optional. A CEL expression that may be used to validate the resolved X.509 Subject and/or Subject Alternative Name before a certificate is signed. To see the full allowed syntax and some examples, see https://cloud.google.com/certificate-authority-service/docs/using-cel\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "allowSubjectAltNamesPassthrough",
                "allowSubjectPassthrough"
            ]
        },
        "gcp:certificateauthority/CertificateTemplateIdentityConstraintsCelExpression:CertificateTemplateIdentityConstraintsCelExpression": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateTemplatePassthroughExtensions:CertificateTemplatePassthroughExtensions": {
            "properties": {
                "additionalExtensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePassthroughExtensionsAdditionalExtension:CertificateTemplatePassthroughExtensionsAdditionalExtension"
                    },
                    "description": "Optional. A set of ObjectIds identifying custom X.509 extensions. Will be combined with\u003cspan pulumi-lang-nodejs=\" knownExtensions \" pulumi-lang-dotnet=\" KnownExtensions \" pulumi-lang-go=\" knownExtensions \" pulumi-lang-python=\" known_extensions \" pulumi-lang-yaml=\" knownExtensions \" pulumi-lang-java=\" knownExtensions \" pulumi-lang-hcl=\" known_extensions \"\u003e knownExtensions \u003c/span\u003eto determine the full set of X.509 extensions.\nStructure is documented below.\n"
                },
                "knownExtensions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A set of named X.509 extensions. Will be combined with\u003cspan pulumi-lang-nodejs=\" additionalExtensions \" pulumi-lang-dotnet=\" AdditionalExtensions \" pulumi-lang-go=\" additionalExtensions \" pulumi-lang-python=\" additional_extensions \" pulumi-lang-yaml=\" additionalExtensions \" pulumi-lang-java=\" additionalExtensions \" pulumi-lang-hcl=\" additional_extensions \"\u003e additionalExtensions \u003c/span\u003eto determine the full set of X.509 extensions.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateTemplatePassthroughExtensionsAdditionalExtension:CertificateTemplatePassthroughExtensionsAdditionalExtension": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Required. The parts of an OID path. The most significant parts of the path come first.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValues:CertificateTemplatePredefinedValues": {
            "properties": {
                "additionalExtensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesAdditionalExtension:CertificateTemplatePredefinedValuesAdditionalExtension"
                    },
                    "description": "Optional. Describes custom X.509 extensions.\nStructure is documented below.\n"
                },
                "aiaOcspServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the \"Authority Information Access\" extension in the certificate.\n"
                },
                "caOptions": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesCaOptions:CertificateTemplatePredefinedValuesCaOptions",
                    "description": "Optional. Describes options in this X509Parameters that are relevant in a CA certificate.\nStructure is documented below.\n"
                },
                "keyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesKeyUsage:CertificateTemplatePredefinedValuesKeyUsage",
                    "description": "Optional. Indicates the intended use for keys that correspond to a certificate.\nStructure is documented below.\n"
                },
                "nameConstraints": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesNameConstraints:CertificateTemplatePredefinedValuesNameConstraints",
                    "description": "Describes the X.509 name constraints extension.\nStructure is documented below.\n"
                },
                "policyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesPolicyId:CertificateTemplatePredefinedValuesPolicyId"
                    },
                    "description": "Optional. Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesAdditionalExtension:CertificateTemplatePredefinedValuesAdditionalExtension": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Optional. Indicates whether or not this extension is critical (i.e., if the client does not know how to handle this extension, the client should consider this to be an error).\n"
                },
                "objectId": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesAdditionalExtensionObjectId:CertificateTemplatePredefinedValuesAdditionalExtensionObjectId",
                    "description": "Required. The OID for this X.509 extension.\nStructure is documented below.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Required. The value of this X.509 extension.\n"
                }
            },
            "type": "object",
            "required": [
                "objectId",
                "value"
            ]
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesAdditionalExtensionObjectId:CertificateTemplatePredefinedValuesAdditionalExtensionObjectId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Required. The parts of an OID path. The most significant parts of the path come first.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesCaOptions:CertificateTemplatePredefinedValuesCaOptions": {
            "properties": {
                "isCa": {
                    "type": "boolean",
                    "description": "Optional. Refers to the \"CA\" X.509 extension, which is a boolean value. When this value is true, the \"CA\" in Basic Constraints extension will be set to true.\n"
                },
                "maxIssuerPathLength": {
                    "type": "integer",
                    "description": "Optional. Refers to the \"path length constraint\" in Basic Constraints extension. For a CA certificate, this value describes the depth of\nsubordinate CA certificates that are allowed. If this value is less than 0, the request will fail.\n"
                },
                "nullCa": {
                    "type": "boolean",
                    "description": "Optional. When true, the \"CA\" in Basic Constraints extension will be set to null and omitted from the CA certificate.\nIf both \u003cspan pulumi-lang-nodejs=\"`isCa`\" pulumi-lang-dotnet=\"`IsCa`\" pulumi-lang-go=\"`isCa`\" pulumi-lang-python=\"`is_ca`\" pulumi-lang-yaml=\"`isCa`\" pulumi-lang-java=\"`isCa`\" pulumi-lang-hcl=\"`is_ca`\"\u003e`isCa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`nullCa`\" pulumi-lang-dotnet=\"`NullCa`\" pulumi-lang-go=\"`nullCa`\" pulumi-lang-python=\"`null_ca`\" pulumi-lang-yaml=\"`nullCa`\" pulumi-lang-java=\"`nullCa`\" pulumi-lang-hcl=\"`null_ca`\"\u003e`nullCa`\u003c/span\u003e are unset, the \"CA\" in Basic Constraints extension will be set to false.\nNote that the behavior when \u003cspan pulumi-lang-nodejs=\"`isCa \" pulumi-lang-dotnet=\"`IsCa \" pulumi-lang-go=\"`isCa \" pulumi-lang-python=\"`is_ca \" pulumi-lang-yaml=\"`isCa \" pulumi-lang-java=\"`isCa \" pulumi-lang-hcl=\"`is_ca \"\u003e`isCa \u003c/span\u003e= false` for this resource is different from the behavior in the Certificate Authority, Certificate and CaPool resources.\n"
                },
                "zeroMaxIssuerPathLength": {
                    "type": "boolean",
                    "description": "Optional. When true, the \"path length constraint\" in Basic Constraints extension will be set to 0.\nif both \u003cspan pulumi-lang-nodejs=\"`maxIssuerPathLength`\" pulumi-lang-dotnet=\"`MaxIssuerPathLength`\" pulumi-lang-go=\"`maxIssuerPathLength`\" pulumi-lang-python=\"`max_issuer_path_length`\" pulumi-lang-yaml=\"`maxIssuerPathLength`\" pulumi-lang-java=\"`maxIssuerPathLength`\" pulumi-lang-hcl=\"`max_issuer_path_length`\"\u003e`maxIssuerPathLength`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`zeroMaxIssuerPathLength`\" pulumi-lang-dotnet=\"`ZeroMaxIssuerPathLength`\" pulumi-lang-go=\"`zeroMaxIssuerPathLength`\" pulumi-lang-python=\"`zero_max_issuer_path_length`\" pulumi-lang-yaml=\"`zeroMaxIssuerPathLength`\" pulumi-lang-java=\"`zeroMaxIssuerPathLength`\" pulumi-lang-hcl=\"`zero_max_issuer_path_length`\"\u003e`zeroMaxIssuerPathLength`\u003c/span\u003e are unset,\nthe max path length will be omitted from the CA certificate.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesKeyUsage:CertificateTemplatePredefinedValuesKeyUsage": {
            "properties": {
                "baseKeyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsage:CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsage",
                    "description": "Describes high-level ways in which a key may be used.\nStructure is documented below.\n"
                },
                "extendedKeyUsage": {
                    "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsage:CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsage",
                    "description": "Detailed scenarios in which a key may be used.\nStructure is documented below.\n"
                },
                "unknownExtendedKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsage:CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsage"
                    },
                    "description": "Used to describe extended key usages that are not listed in the KeyUsage.ExtendedKeyUsageOptions message.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsage:CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsage": {
            "properties": {
                "certSign": {
                    "type": "boolean",
                    "description": "The key may be used to sign certificates.\n"
                },
                "contentCommitment": {
                    "type": "boolean",
                    "description": "The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".\n"
                },
                "crlSign": {
                    "type": "boolean",
                    "description": "The key may be used sign certificate revocation lists.\n"
                },
                "dataEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher data.\n"
                },
                "decipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to decipher only.\n"
                },
                "digitalSignature": {
                    "type": "boolean",
                    "description": "The key may be used for digital signatures.\n"
                },
                "encipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to encipher only.\n"
                },
                "keyAgreement": {
                    "type": "boolean",
                    "description": "The key may be used in a key agreement protocol.\n"
                },
                "keyEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher other keys.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsage:CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsage": {
            "properties": {
                "clientAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.\n"
                },
                "codeSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".\n"
                },
                "emailProtection": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".\n"
                },
                "ocspSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".\n"
                },
                "serverAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.\n"
                },
                "timeStamping": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".\n"
                }
            },
            "type": "object"
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsage:CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsage": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Required. The parts of an OID path. The most significant parts of the path come first.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesNameConstraints:CertificateTemplatePredefinedValuesNameConstraints": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not the name constraints are marked critical.\n"
                },
                "excludedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains excluded DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n"
                },
                "excludedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n"
                },
                "excludedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n"
                },
                "excludedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n"
                },
                "permittedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains permitted DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, `example.com`, `www.example.com`, `www.sub.example.com`\nwould satisfy `example.com` while `example1.com` does not.\n"
                },
                "permittedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. `.example.com`) to indicate\nall email addresses in that domain.\n"
                },
                "permittedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n"
                },
                "permittedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like `.example.com`)\n"
                }
            },
            "type": "object",
            "required": [
                "critical"
            ]
        },
        "gcp:certificateauthority/CertificateTemplatePredefinedValuesPolicyId:CertificateTemplatePredefinedValuesPolicyId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Required. The parts of an OID path. The most significant parts of the path come first.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ]
        },
        "gcp:certificateauthority/getAuthorityAccessUrl:getAuthorityAccessUrl": {
            "properties": {
                "caCertificateAccessUrl": {
                    "type": "string",
                    "description": "The URL where this CertificateAuthority's CA certificate is published. This will only be\nset for CAs that have been activated.\n"
                },
                "crlAccessUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The URL where this CertificateAuthority's CRLs are published. This will only be set for\nCAs that have been activated.\n"
                }
            },
            "type": "object",
            "required": [
                "caCertificateAccessUrl",
                "crlAccessUrls"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfig:getAuthorityConfig": {
            "properties": {
                "subjectConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigSubjectConfig:getAuthorityConfigSubjectConfig"
                    },
                    "description": "Specifies some of the values in a certificate that are related to the subject.\n"
                },
                "subjectKeyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigSubjectKeyId:getAuthorityConfigSubjectKeyId"
                    },
                    "description": "When specified this provides a custom SKI to be used in the certificate. This should only be used to maintain a SKI of an existing CA originally created outside CA service, which was not generated using method (1) described in RFC 5280 section 4.2.1.2..\n"
                },
                "x509Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509Config:getAuthorityConfigX509Config"
                    },
                    "description": "Describes how some of the technical X.509 fields in a certificate should be populated.\n"
                }
            },
            "type": "object",
            "required": [
                "subjectConfigs",
                "subjectKeyIds",
                "x509Configs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigSubjectConfig:getAuthorityConfigSubjectConfig": {
            "properties": {
                "subjectAltNames": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigSubjectConfigSubjectAltName:getAuthorityConfigSubjectConfigSubjectAltName"
                    },
                    "description": "The subject alternative name fields.\n"
                },
                "subjects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigSubjectConfigSubject:getAuthorityConfigSubjectConfigSubject"
                    },
                    "description": "Contains distinguished name fields such as the location and organization.\n"
                }
            },
            "type": "object",
            "required": [
                "subjects",
                "subjectAltNames"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigSubjectConfigSubject:getAuthorityConfigSubjectConfigSubject": {
            "properties": {
                "commonName": {
                    "type": "string",
                    "description": "The common name of the distinguished name.\n"
                },
                "countryCode": {
                    "type": "string",
                    "description": "The country code of the subject.\n"
                },
                "locality": {
                    "type": "string",
                    "description": "The locality or city of the subject.\n"
                },
                "organization": {
                    "type": "string",
                    "description": "The organization of the subject.\n"
                },
                "organizationalUnit": {
                    "type": "string",
                    "description": "The organizational unit of the subject.\n"
                },
                "postalCode": {
                    "type": "string",
                    "description": "The postal code of the subject.\n"
                },
                "province": {
                    "type": "string",
                    "description": "The province, territory, or regional state of the subject.\n"
                },
                "streetAddress": {
                    "type": "string",
                    "description": "The street address of the subject.\n"
                }
            },
            "type": "object",
            "required": [
                "commonName",
                "countryCode",
                "locality",
                "organization",
                "organizationalUnit",
                "postalCode",
                "province",
                "streetAddress"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigSubjectConfigSubjectAltName:getAuthorityConfigSubjectConfigSubjectAltName": {
            "properties": {
                "dnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid, fully-qualified host names.\n"
                },
                "emailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid RFC 2822 E-mail addresses.\n"
                },
                "ipAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.\n"
                },
                "uris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains only valid RFC 3986 URIs.\n"
                }
            },
            "type": "object",
            "required": [
                "dnsNames",
                "emailAddresses",
                "ipAddresses",
                "uris"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigSubjectKeyId:getAuthorityConfigSubjectKeyId": {
            "properties": {
                "keyId": {
                    "type": "string",
                    "description": "The value of the KeyId in lowercase hexadecimal.\n"
                }
            },
            "type": "object",
            "required": [
                "keyId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509Config:getAuthorityConfigX509Config": {
            "properties": {
                "additionalExtensions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigAdditionalExtension:getAuthorityConfigX509ConfigAdditionalExtension"
                    },
                    "description": "Specifies an X.509 extension, which may be used in different parts of X.509 objects like certificates, CSRs, and CRLs.\n"
                },
                "aiaOcspServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the\n\"Authority Information Access\" extension in the certificate.\n"
                },
                "caOptions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigCaOption:getAuthorityConfigX509ConfigCaOption"
                    },
                    "description": "Describes values that are relevant in a CA certificate.\n"
                },
                "keyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigKeyUsage:getAuthorityConfigX509ConfigKeyUsage"
                    },
                    "description": "Indicates the intended use for keys that correspond to a certificate.\n"
                },
                "nameConstraints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigNameConstraint:getAuthorityConfigX509ConfigNameConstraint"
                    },
                    "description": "Describes the X.509 name constraints extension.\n"
                },
                "policyIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigPolicyId:getAuthorityConfigX509ConfigPolicyId"
                    },
                    "description": "Describes the X.509 certificate policy object identifiers, per https://tools.ietf.org/html/rfc5280#section-4.2.1.4.\n"
                }
            },
            "type": "object",
            "required": [
                "additionalExtensions",
                "aiaOcspServers",
                "caOptions",
                "keyUsages",
                "nameConstraints",
                "policyIds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigAdditionalExtension:getAuthorityConfigX509ConfigAdditionalExtension": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not this extension is critical (i.e., if the client does not know how to\nhandle this extension, the client should consider this to be an error).\n"
                },
                "objectIds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigAdditionalExtensionObjectId:getAuthorityConfigX509ConfigAdditionalExtensionObjectId"
                    },
                    "description": "Describes values that are relevant in a CA certificate.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of this X.509 extension. A base64-encoded string.\n"
                }
            },
            "type": "object",
            "required": [
                "critical",
                "objectIds",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigAdditionalExtensionObjectId:getAuthorityConfigX509ConfigAdditionalExtensionObjectId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigCaOption:getAuthorityConfigX509ConfigCaOption": {
            "properties": {
                "isCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to true.\n"
                },
                "maxIssuerPathLength": {
                    "type": "integer",
                    "description": "Refers to the \"path length constraint\" in Basic Constraints extension. For a CA certificate, this value describes the depth of\nsubordinate CA certificates that are allowed. If this value is less than 0, the request will fail. Setting the value to 0\nrequires setting 'zero_max_issuer_path_length = true'.\n"
                },
                "nonCa": {
                    "type": "boolean",
                    "description": "When true, the \"CA\" in Basic Constraints extension will be set to false.\nIf both 'is_ca' and 'non_ca' are unset, the extension will be omitted from the CA certificate.\n"
                },
                "zeroMaxIssuerPathLength": {
                    "type": "boolean",
                    "description": "When true, the \"path length constraint\" in Basic Constraints extension will be set to 0.\nIf both 'max_issuer_path_length' and 'zero_max_issuer_path_length' are unset,\nthe max path length will be omitted from the CA certificate.\n"
                }
            },
            "type": "object",
            "required": [
                "isCa",
                "maxIssuerPathLength",
                "nonCa",
                "zeroMaxIssuerPathLength"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigKeyUsage:getAuthorityConfigX509ConfigKeyUsage": {
            "properties": {
                "baseKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigKeyUsageBaseKeyUsage:getAuthorityConfigX509ConfigKeyUsageBaseKeyUsage"
                    },
                    "description": "Describes high-level ways in which a key may be used.\n"
                },
                "extendedKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigKeyUsageExtendedKeyUsage:getAuthorityConfigX509ConfigKeyUsageExtendedKeyUsage"
                    },
                    "description": "Describes high-level ways in which a key may be used.\n"
                },
                "unknownExtendedKeyUsages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthorityConfigX509ConfigKeyUsageUnknownExtendedKeyUsage:getAuthorityConfigX509ConfigKeyUsageUnknownExtendedKeyUsage"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "required": [
                "baseKeyUsages",
                "extendedKeyUsages",
                "unknownExtendedKeyUsages"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigKeyUsageBaseKeyUsage:getAuthorityConfigX509ConfigKeyUsageBaseKeyUsage": {
            "properties": {
                "certSign": {
                    "type": "boolean",
                    "description": "The key may be used to sign certificates.\n"
                },
                "contentCommitment": {
                    "type": "boolean",
                    "description": "The key may be used for cryptographic commitments. Note that this may also be referred to as \"non-repudiation\".\n"
                },
                "crlSign": {
                    "type": "boolean",
                    "description": "The key may be used sign certificate revocation lists.\n"
                },
                "dataEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher data.\n"
                },
                "decipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to decipher only.\n"
                },
                "digitalSignature": {
                    "type": "boolean",
                    "description": "The key may be used for digital signatures.\n"
                },
                "encipherOnly": {
                    "type": "boolean",
                    "description": "The key may be used to encipher only.\n"
                },
                "keyAgreement": {
                    "type": "boolean",
                    "description": "The key may be used in a key agreement protocol.\n"
                },
                "keyEncipherment": {
                    "type": "boolean",
                    "description": "The key may be used to encipher other keys.\n"
                }
            },
            "type": "object",
            "required": [
                "certSign",
                "contentCommitment",
                "crlSign",
                "dataEncipherment",
                "decipherOnly",
                "digitalSignature",
                "encipherOnly",
                "keyAgreement",
                "keyEncipherment"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigKeyUsageExtendedKeyUsage:getAuthorityConfigX509ConfigKeyUsageExtendedKeyUsage": {
            "properties": {
                "clientAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as \"TLS WWW client authentication\", though regularly used for non-WWW TLS.\n"
                },
                "codeSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as \"Signing of downloadable executable code client authentication\".\n"
                },
                "emailProtection": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as \"Email protection\".\n"
                },
                "ocspSigning": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as \"Signing OCSP responses\".\n"
                },
                "serverAuth": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as \"TLS WWW server authentication\", though regularly used for non-WWW TLS.\n"
                },
                "timeStamping": {
                    "type": "boolean",
                    "description": "Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as \"Binding the hash of an object to a time\".\n"
                }
            },
            "type": "object",
            "required": [
                "clientAuth",
                "codeSigning",
                "emailProtection",
                "ocspSigning",
                "serverAuth",
                "timeStamping"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigKeyUsageUnknownExtendedKeyUsage:getAuthorityConfigX509ConfigKeyUsageUnknownExtendedKeyUsage": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigNameConstraint:getAuthorityConfigX509ConfigNameConstraint": {
            "properties": {
                "critical": {
                    "type": "boolean",
                    "description": "Indicates whether or not the name constraints are marked critical.\n"
                },
                "excludedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains excluded DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, 'example.com', 'www.example.com', 'www.sub.example.com'\nwould satisfy 'example.com' while 'example1.com' does not.\n"
                },
                "excludedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. '.example.com') to indicate\nall email addresses in that domain.\n"
                },
                "excludedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n"
                },
                "excludedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the excluded URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like '.example.com')\n"
                },
                "permittedDnsNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains permitted DNS names. Any DNS name that can be\nconstructed by simply adding zero or more labels to\nthe left-hand side of the name satisfies the name constraint.\nFor example, 'example.com', 'www.example.com', 'www.sub.example.com'\nwould satisfy 'example.com' while 'example1.com' does not.\n"
                },
                "permittedEmailAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted email addresses. The value can be a particular\nemail address, a hostname to indicate all email addresses on that host or\na domain with a leading period (e.g. '.example.com') to indicate\nall email addresses in that domain.\n"
                },
                "permittedIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted IP ranges. For IPv4 addresses, the ranges\nare expressed using CIDR notation as specified in RFC 4632.\nFor IPv6 addresses, the ranges are expressed in similar encoding as IPv4\naddresses.\n"
                },
                "permittedUris": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the permitted URIs that apply to the host part of the name.\nThe value can be a hostname or a domain with a\nleading period (like '.example.com')\n"
                }
            },
            "type": "object",
            "required": [
                "critical",
                "excludedDnsNames",
                "excludedEmailAddresses",
                "excludedIpRanges",
                "excludedUris",
                "permittedDnsNames",
                "permittedEmailAddresses",
                "permittedIpRanges",
                "permittedUris"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityConfigX509ConfigPolicyId:getAuthorityConfigX509ConfigPolicyId": {
            "properties": {
                "objectIdPaths": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.\n"
                }
            },
            "type": "object",
            "required": [
                "objectIdPaths"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityKeySpec:getAuthorityKeySpec": {
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The algorithm to use for creating a managed Cloud KMS key for a for a simplified\nexperience. All managed keys will be have their ProtectionLevel as HSM. Possible values: [\"SIGN_HASH_ALGORITHM_UNSPECIFIED\", \"RSA_PSS_2048_SHA256\", \"RSA_PSS_3072_SHA256\", \"RSA_PSS_4096_SHA256\", \"RSA_PKCS1_2048_SHA256\", \"RSA_PKCS1_3072_SHA256\", \"RSA_PKCS1_4096_SHA256\", \"EC_P256_SHA256\", \"EC_P384_SHA384\"]\n"
                },
                "cloudKmsKeyVersion": {
                    "type": "string",
                    "description": "The resource name for an existing Cloud KMS CryptoKeyVersion in the format\n'projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*'.\n"
                }
            },
            "type": "object",
            "required": [
                "algorithm",
                "cloudKmsKeyVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthoritySubordinateConfig:getAuthoritySubordinateConfig": {
            "properties": {
                "certificateAuthority": {
                    "type": "string",
                    "description": "This can refer to a CertificateAuthority that was used to create a\nsubordinate CertificateAuthority. This field is used for information\nand usability purposes only. The resource name is in the format\n'projects/*/locations/*/caPools/*/certificateAuthorities/*'.\n"
                },
                "pemIssuerChains": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificateauthority/getAuthoritySubordinateConfigPemIssuerChain:getAuthoritySubordinateConfigPemIssuerChain"
                    },
                    "description": "Contains the PEM certificate chain for the issuers of this CertificateAuthority,\nbut not pem certificate for this CA itself.\n"
                }
            },
            "type": "object",
            "required": [
                "certificateAuthority",
                "pemIssuerChains"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthoritySubordinateConfigPemIssuerChain:getAuthoritySubordinateConfigPemIssuerChain": {
            "properties": {
                "pemCertificates": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Expected to be in leaf-to-root order according to RFC 5246.\n"
                }
            },
            "type": "object",
            "required": [
                "pemCertificates"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificateauthority/getAuthorityUserDefinedAccessUrl:getAuthorityUserDefinedAccessUrl": {
            "properties": {
                "aiaIssuingCertificateUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of URLs where this CertificateAuthority's CA certificate is published that is specified by users.\n"
                },
                "crlAccessUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of URLs where this CertificateAuthority's CRLs are published that is specified by users.\n"
                }
            },
            "type": "object",
            "required": [
                "aiaIssuingCertificateUrls",
                "crlAccessUrls"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificatemanager/CertificateIssuanceConfigCertificateAuthorityConfig:CertificateIssuanceConfigCertificateAuthorityConfig": {
            "properties": {
                "certificateAuthorityServiceConfig": {
                    "$ref": "#/types/gcp:certificatemanager/CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfig:CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfig",
                    "description": "Defines a CertificateAuthorityServiceConfig.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificatemanager/CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfig:CertificateIssuanceConfigCertificateAuthorityConfigCertificateAuthorityServiceConfig": {
            "properties": {
                "caPool": {
                    "type": "string",
                    "description": "A CA pool resource used to issue a certificate.\nThe CA pool string has a relative resource path following the form\n\"projects/{project}/locations/{location}/caPools/{caPool}\".\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "caPool"
            ]
        },
        "gcp:certificatemanager/CertificateManaged:CertificateManaged": {
            "properties": {
                "authorizationAttemptInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/CertificateManagedAuthorizationAttemptInfo:CertificateManagedAuthorizationAttemptInfo"
                    },
                    "description": "(Output)\nDetailed state of the latest authorization attempt for each domain\nspecified for this Managed Certificate.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedManagedProvisioningIssue\"\" pulumi-lang-dotnet=\"\"NestedManagedProvisioningIssue\"\" pulumi-lang-go=\"\"nestedManagedProvisioningIssue\"\" pulumi-lang-python=\"\"nested_managed_provisioning_issue\"\" pulumi-lang-yaml=\"\"nestedManagedProvisioningIssue\"\" pulumi-lang-java=\"\"nestedManagedProvisioningIssue\"\" pulumi-lang-hcl=\"\"nested_managed_provisioning_issue\"\"\u003e\"nestedManagedProvisioningIssue\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`provisioningIssue`\" pulumi-lang-dotnet=\"`ProvisioningIssue`\" pulumi-lang-go=\"`provisioningIssue`\" pulumi-lang-python=\"`provisioning_issue`\" pulumi-lang-yaml=\"`provisioningIssue`\" pulumi-lang-java=\"`provisioningIssue`\" pulumi-lang-hcl=\"`provisioning_issue`\"\u003e`provisioningIssue`\u003c/span\u003e block contains:\n"
                },
                "dnsAuthorizations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Authorizations that will be used for performing domain authorization. Either issuanceConfig or dnsAuthorizations should be specificed, but not both.\n",
                    "willReplaceOnChanges": true
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The domains for which a managed SSL certificate will be generated.\nWildcard domains are only supported with DNS challenge resolution\n",
                    "willReplaceOnChanges": true
                },
                "issuanceConfig": {
                    "type": "string",
                    "description": "The resource name for a CertificateIssuanceConfig used to configure private PKI certificates in the format projects/*/locations/*/certificateIssuanceConfigs/*.\nIf this field is not set, the certificates will instead be publicly signed as documented at https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs#caa.\nEither issuanceConfig or dnsAuthorizations should be specificed, but not both.\n",
                    "willReplaceOnChanges": true
                },
                "provisioningIssues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/CertificateManagedProvisioningIssue:CertificateManagedProvisioningIssue"
                    },
                    "description": "(Output)\nInformation about issues with provisioning this Managed Certificate.\nStructure is documented below.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the domain for managed certificate issuance.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "authorizationAttemptInfos",
                        "provisioningIssues",
                        "state"
                    ]
                }
            }
        },
        "gcp:certificatemanager/CertificateManagedAuthorizationAttemptInfo:CertificateManagedAuthorizationAttemptInfo": {
            "properties": {
                "details": {
                    "type": "string",
                    "description": "Human readable explanation for reaching the state. Provided to help\naddress the configuration issues.\nNot guaranteed to be stable. For programmatic access use 'failure_reason' field.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "Domain name of the authorization attempt.\n"
                },
                "failureReason": {
                    "type": "string",
                    "description": "Reason for failure of the authorization attempt for the domain.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the domain for managed certificate issuance.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "details",
                        "domain",
                        "failureReason",
                        "state"
                    ]
                }
            }
        },
        "gcp:certificatemanager/CertificateManagedProvisioningIssue:CertificateManagedProvisioningIssue": {
            "properties": {
                "details": {
                    "type": "string",
                    "description": "Human readable explanation about the issue. Provided to help address\nthe configuration issues.\nNot guaranteed to be stable. For programmatic access use 'reason' field.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "Reason for provisioning failures.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "details",
                        "reason"
                    ]
                }
            }
        },
        "gcp:certificatemanager/CertificateMapGclbTarget:CertificateMapGclbTarget": {
            "properties": {
                "ipConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/CertificateMapGclbTargetIpConfig:CertificateMapGclbTargetIpConfig"
                    },
                    "description": "An IP configuration where this Certificate Map is serving\nStructure is documented below.\n"
                },
                "targetHttpsProxy": {
                    "type": "string",
                    "description": "Proxy name must be in the format projects/*/locations/*/targetHttpsProxies/*.\nThis field is part of a union field \u003cspan pulumi-lang-nodejs=\"`targetProxy`\" pulumi-lang-dotnet=\"`TargetProxy`\" pulumi-lang-go=\"`targetProxy`\" pulumi-lang-python=\"`target_proxy`\" pulumi-lang-yaml=\"`targetProxy`\" pulumi-lang-java=\"`targetProxy`\" pulumi-lang-hcl=\"`target_proxy`\"\u003e`targetProxy`\u003c/span\u003e: Only one of `targetHttpsProxy` or\n`targetSslProxy` may be set.\n"
                },
                "targetSslProxy": {
                    "type": "string",
                    "description": "Proxy name must be in the format projects/*/locations/*/targetSslProxies/*.\nThis field is part of a union field \u003cspan pulumi-lang-nodejs=\"`targetProxy`\" pulumi-lang-dotnet=\"`TargetProxy`\" pulumi-lang-go=\"`targetProxy`\" pulumi-lang-python=\"`target_proxy`\" pulumi-lang-yaml=\"`targetProxy`\" pulumi-lang-java=\"`targetProxy`\" pulumi-lang-hcl=\"`target_proxy`\"\u003e`targetProxy`\u003c/span\u003e: Only one of `targetHttpsProxy` or\n`targetSslProxy` may be set.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificatemanager/CertificateMapGclbTargetIpConfig:CertificateMapGclbTargetIpConfig": {
            "properties": {
                "ipAddress": {
                    "type": "string",
                    "description": "An external IP address\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "A list of ports\n"
                }
            },
            "type": "object"
        },
        "gcp:certificatemanager/CertificateSelfManaged:CertificateSelfManaged": {
            "properties": {
                "certificatePem": {
                    "type": "string",
                    "description": "(Optional, Deprecated)\nThe certificate chain in PEM-encoded form.\nLeaf certificate comes first, followed by intermediate ones if any.\n**Note**: This property is sensitive and will not be displayed in the plan.\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`certificatePem`\" pulumi-lang-dotnet=\"`CertificatePem`\" pulumi-lang-go=\"`certificatePem`\" pulumi-lang-python=\"`certificate_pem`\" pulumi-lang-yaml=\"`certificatePem`\" pulumi-lang-java=\"`certificatePem`\" pulumi-lang-hcl=\"`certificate_pem`\"\u003e`certificatePem`\u003c/span\u003e is deprecated and will be removed in a future major release. Use \u003cspan pulumi-lang-nodejs=\"`pemCertificate`\" pulumi-lang-dotnet=\"`PemCertificate`\" pulumi-lang-go=\"`pemCertificate`\" pulumi-lang-python=\"`pem_certificate`\" pulumi-lang-yaml=\"`pemCertificate`\" pulumi-lang-java=\"`pemCertificate`\" pulumi-lang-hcl=\"`pem_certificate`\"\u003e`pemCertificate`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`certificatePem`\" pulumi-lang-dotnet=\"`CertificatePem`\" pulumi-lang-go=\"`certificatePem`\" pulumi-lang-python=\"`certificate_pem`\" pulumi-lang-yaml=\"`certificatePem`\" pulumi-lang-java=\"`certificatePem`\" pulumi-lang-hcl=\"`certificate_pem`\"\u003e`certificatePem`\u003c/span\u003e is deprecated and will be removed in a future major release. Use \u003cspan pulumi-lang-nodejs=\"`pemCertificate`\" pulumi-lang-dotnet=\"`PemCertificate`\" pulumi-lang-go=\"`pemCertificate`\" pulumi-lang-python=\"`pem_certificate`\" pulumi-lang-yaml=\"`pemCertificate`\" pulumi-lang-java=\"`pemCertificate`\" pulumi-lang-hcl=\"`pem_certificate`\"\u003e`pemCertificate`\u003c/span\u003e instead.",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "pemCertificate": {
                    "type": "string",
                    "description": "The certificate chain in PEM-encoded form.\nLeaf certificate comes first, followed by intermediate ones if any.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "willReplaceOnChanges": true
                },
                "pemPrivateKey": {
                    "type": "string",
                    "description": "The private key of the leaf certificate in PEM-encoded form.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "privateKeyPem": {
                    "type": "string",
                    "description": "(Optional, Deprecated)\nThe private key of the leaf certificate in PEM-encoded form.\n**Note**: This property is sensitive and will not be displayed in the plan.\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`privateKeyPem`\" pulumi-lang-dotnet=\"`PrivateKeyPem`\" pulumi-lang-go=\"`privateKeyPem`\" pulumi-lang-python=\"`private_key_pem`\" pulumi-lang-yaml=\"`privateKeyPem`\" pulumi-lang-java=\"`privateKeyPem`\" pulumi-lang-hcl=\"`private_key_pem`\"\u003e`privateKeyPem`\u003c/span\u003e is deprecated and will be removed in a future major release. Use \u003cspan pulumi-lang-nodejs=\"`pemPrivateKey`\" pulumi-lang-dotnet=\"`PemPrivateKey`\" pulumi-lang-go=\"`pemPrivateKey`\" pulumi-lang-python=\"`pem_private_key`\" pulumi-lang-yaml=\"`pemPrivateKey`\" pulumi-lang-java=\"`pemPrivateKey`\" pulumi-lang-hcl=\"`pem_private_key`\"\u003e`pemPrivateKey`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`privateKeyPem`\" pulumi-lang-dotnet=\"`PrivateKeyPem`\" pulumi-lang-go=\"`privateKeyPem`\" pulumi-lang-python=\"`private_key_pem`\" pulumi-lang-yaml=\"`privateKeyPem`\" pulumi-lang-java=\"`privateKeyPem`\" pulumi-lang-hcl=\"`private_key_pem`\"\u003e`privateKeyPem`\u003c/span\u003e is deprecated and will be removed in a future major release. Use \u003cspan pulumi-lang-nodejs=\"`pemPrivateKey`\" pulumi-lang-dotnet=\"`PemPrivateKey`\" pulumi-lang-go=\"`pemPrivateKey`\" pulumi-lang-python=\"`pem_private_key`\" pulumi-lang-yaml=\"`pemPrivateKey`\" pulumi-lang-java=\"`pemPrivateKey`\" pulumi-lang-hcl=\"`pem_private_key`\"\u003e`pemPrivateKey`\u003c/span\u003e instead.",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:certificatemanager/DnsAuthorizationDnsResourceRecord:DnsAuthorizationDnsResourceRecord": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "(Output)\nData of the DNS Resource Record.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the resource; provided by the client when the resource is created.\nThe name must be 1-64 characters long, and match the regular expression [a-zA-Z][a-zA-Z0-9_-]* which means the first character must be a letter,\nand all following characters must be a dash, underscore, letter or digit.\n"
                },
                "type": {
                    "type": "string",
                    "description": "type of DNS authorization. If unset during the resource creation, FIXED_RECORD will\nbe used for global resources, and PER_PROJECT_RECORD will be used for other locations.\nFIXED_RECORD DNS authorization uses DNS-01 validation method\nPER_PROJECT_RECORD DNS authorization allows for independent management\nof Google-managed certificates with DNS authorization across multiple\nprojects.\nPossible values are: `FIXED_RECORD`, `PER_PROJECT_RECORD`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "data",
                        "name",
                        "type"
                    ]
                }
            }
        },
        "gcp:certificatemanager/TrustConfigAllowlistedCertificate:TrustConfigAllowlistedCertificate": {
            "properties": {
                "pemCertificate": {
                    "type": "string",
                    "description": "PEM certificate that is allowlisted. The certificate can be up to 5k bytes, and must be a parseable X.509 certificate.\n"
                }
            },
            "type": "object",
            "required": [
                "pemCertificate"
            ]
        },
        "gcp:certificatemanager/TrustConfigTrustStore:TrustConfigTrustStore": {
            "properties": {
                "intermediateCas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/TrustConfigTrustStoreIntermediateCa:TrustConfigTrustStoreIntermediateCa"
                    },
                    "description": "Set of intermediate CA certificates used for the path building phase of chain validation.\nThe field is currently not supported if trust config is used for the workload certificate feature.\nStructure is documented below.\n"
                },
                "trustAnchors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/TrustConfigTrustStoreTrustAnchor:TrustConfigTrustStoreTrustAnchor"
                    },
                    "description": "List of Trust Anchors to be used while performing validation against a given TrustStore.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:certificatemanager/TrustConfigTrustStoreIntermediateCa:TrustConfigTrustStoreIntermediateCa": {
            "properties": {
                "pemCertificate": {
                    "type": "string",
                    "description": "PEM intermediate certificate used for building up paths for validation.\nEach certificate provided in PEM format may occupy up to 5kB.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:certificatemanager/TrustConfigTrustStoreTrustAnchor:TrustConfigTrustStoreTrustAnchor": {
            "properties": {
                "pemCertificate": {
                    "type": "string",
                    "description": "PEM root certificate of the PKI used for validation.\nEach certificate provided in PEM format may occupy up to 5kB.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:certificatemanager/getCertificateMapGclbTarget:getCertificateMapGclbTarget": {
            "properties": {
                "ipConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/getCertificateMapGclbTargetIpConfig:getCertificateMapGclbTargetIpConfig"
                    },
                    "description": "An IP configuration where this Certificate Map is serving\n"
                },
                "targetHttpsProxy": {
                    "type": "string",
                    "description": "Proxy name must be in the format projects/*/locations/*/targetHttpsProxies/*.\nThis field is part of a union field 'target_proxy': Only one of 'targetHttpsProxy' or\n'targetSslProxy' may be set.\n"
                },
                "targetSslProxy": {
                    "type": "string",
                    "description": "Proxy name must be in the format projects/*/locations/*/targetSslProxies/*.\nThis field is part of a union field 'target_proxy': Only one of 'targetHttpsProxy' or\n'targetSslProxy' may be set.\n"
                }
            },
            "type": "object",
            "required": [
                "ipConfigs",
                "targetHttpsProxy",
                "targetSslProxy"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificatemanager/getCertificateMapGclbTargetIpConfig:getCertificateMapGclbTargetIpConfig": {
            "properties": {
                "ipAddress": {
                    "type": "string",
                    "description": "An external IP address\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "A list of ports\n"
                }
            },
            "type": "object",
            "required": [
                "ipAddress",
                "ports"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificatemanager/getCertificatesCertificate:getCertificatesCertificate": {
            "properties": {
                "deletionPolicy": {
                    "type": "string",
                    "description": "Whether Terraform will be prevented from destroying the instance. Defaults to \"DELETE\".\nWhen a 'terraform destroy' or 'terraform apply' would delete the instance,\nthe command will fail if this field is set to \"PREVENT\" in Terraform state.\nWhen set to \"ABANDON\", the command will remove the resource from Terraform\nmanagement without updating or deleting the resource in the API.\nWhen set to \"DELETE\", deleting the resource is allowed.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A human-readable description of the resource.\n"
                },
                "effectiveLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.\n",
                    "secret": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Set of label tags associated with the Certificate resource.\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.\n"
                },
                "location": {
                    "type": "string",
                    "description": "The Certificate Manager location. If not specified, \"global\" is used.\n"
                },
                "manageds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/getCertificatesCertificateManaged:getCertificatesCertificateManaged"
                    },
                    "description": "Configuration and state of a Managed Certificate.\nCertificate Manager provisions and renews Managed Certificates\nautomatically, for as long as it's authorized to do so.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A user-defined name of the certificate. Certificate names must be unique\nThe name must be 1-64 characters long, and match the regular expression [a-zA-Z][a-zA-Z0-9_-]* which means the first character must be a letter,\nand all following characters must be a dash, underscore, letter or digit.\n"
                },
                "project": {
                    "type": "string",
                    "description": "The ID of the project in which the resource belongs. If it\nis not provided, the provider project is used.\n"
                },
                "pulumiLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.\n",
                    "secret": true
                },
                "sanDnsnames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Subject Alternative Names of dnsName type defined in the certificate (see RFC 5280 4.2.1.6)\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The scope of the certificate.\n\nDEFAULT: Certificates with default scope are served from core Google data centers.\nIf unsure, choose this option.\n\nEDGE_CACHE: Certificates with scope EDGE_CACHE are special-purposed certificates, served from Edge Points of Presence.\nSee https://cloud.google.com/vpc/docs/edge-locations.\n\nALL_REGIONS: Certificates with ALL_REGIONS scope are served from all GCP regions (You can only use ALL_REGIONS with global certs).\nSee https://cloud.google.com/compute/docs/regions-zones.\n\nCLIENT_AUTH: Certificates with CLIENT_AUTH scope are used by a load balancer (TLS client) to be presented to the backend (TLS server) when backend mTLS is configured.\nSee https://cloud.google.com/load-balancing/docs/backend-authenticated-tls-backend-mtls#client-certificate.\n"
                }
            },
            "type": "object",
            "required": [
                "deletionPolicy",
                "description",
                "effectiveLabels",
                "labels",
                "location",
                "manageds",
                "name",
                "project",
                "sanDnsnames",
                "scope",
                "pulumiLabels"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificatemanager/getCertificatesCertificateManaged:getCertificatesCertificateManaged": {
            "properties": {
                "authorizationAttemptInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/getCertificatesCertificateManagedAuthorizationAttemptInfo:getCertificatesCertificateManagedAuthorizationAttemptInfo"
                    },
                    "description": "Detailed state of the latest authorization attempt for each domain\nspecified for this Managed Certificate.\n"
                },
                "dnsAuthorizations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Authorizations that will be used for performing domain authorization. Either issuanceConfig or dnsAuthorizations should be specificed, but not both.\n"
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The domains for which a managed SSL certificate will be generated.\nWildcard domains are only supported with DNS challenge resolution\n"
                },
                "issuanceConfig": {
                    "type": "string",
                    "description": "The resource name for a CertificateIssuanceConfig used to configure private PKI certificates in the format projects/*/locations/*/certificateIssuanceConfigs/*.\nIf this field is not set, the certificates will instead be publicly signed as documented at https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs#caa.\nEither issuanceConfig or dnsAuthorizations should be specificed, but not both.\n"
                },
                "provisioningIssues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:certificatemanager/getCertificatesCertificateManagedProvisioningIssue:getCertificatesCertificateManagedProvisioningIssue"
                    },
                    "description": "Information about issues with provisioning this Managed Certificate.\n"
                },
                "state": {
                    "type": "string",
                    "description": "A state of this Managed Certificate.\n"
                }
            },
            "type": "object",
            "required": [
                "authorizationAttemptInfos",
                "dnsAuthorizations",
                "domains",
                "issuanceConfig",
                "provisioningIssues",
                "state"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificatemanager/getCertificatesCertificateManagedAuthorizationAttemptInfo:getCertificatesCertificateManagedAuthorizationAttemptInfo": {
            "properties": {
                "details": {
                    "type": "string",
                    "description": "Human readable explanation for reaching the state. Provided to help\naddress the configuration issues.\nNot guaranteed to be stable. For programmatic access use 'failure_reason' field.\n"
                },
                "domain": {
                    "type": "string",
                    "description": "Domain name of the authorization attempt.\n"
                },
                "failureReason": {
                    "type": "string",
                    "description": "Reason for failure of the authorization attempt for the domain.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the domain for managed certificate issuance.\n"
                }
            },
            "type": "object",
            "required": [
                "details",
                "domain",
                "failureReason",
                "state"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificatemanager/getCertificatesCertificateManagedProvisioningIssue:getCertificatesCertificateManagedProvisioningIssue": {
            "properties": {
                "details": {
                    "type": "string",
                    "description": "Human readable explanation about the issue. Provided to help address\nthe configuration issues.\nNot guaranteed to be stable. For programmatic access use 'reason' field.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "Reason for provisioning failures.\n"
                }
            },
            "type": "object",
            "required": [
                "details",
                "reason"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:certificatemanager/getDnsAuthorizationDnsResourceRecord:getDnsAuthorizationDnsResourceRecord": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "Data of the DNS Resource Record.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the DNS Authorization.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the DNS Resource Record.\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "name",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:ces/AgentAfterAgentCallback:AgentAfterAgentCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/AgentAfterModelCallback:AgentAfterModelCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/AgentAfterToolCallback:AgentAfterToolCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/AgentBeforeAgentCallback:AgentBeforeAgentCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/AgentBeforeModelCallback:AgentBeforeModelCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/AgentBeforeToolCallback:AgentBeforeToolCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/AgentLlmAgent:AgentLlmAgent": {
            "type": "object"
        },
        "gcp:ces/AgentModelSettings:AgentModelSettings": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "The LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "If set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AgentRemoteDialogflowAgent:AgentRemoteDialogflowAgent": {
            "properties": {
                "agent": {
                    "type": "string",
                    "description": "The\n[Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents\nagent resource name.\nFormat: `projects/{project}/locations/{location}/agents/{agent}`\n"
                },
                "environmentId": {
                    "type": "string",
                    "description": "The environment ID of the Dialogflow agent be used for the agent\nexecution. If not specified, the draft environment will be used.\n"
                },
                "flowId": {
                    "type": "string",
                    "description": "The flow ID of the flow in the Dialogflow agent.\n"
                },
                "inputVariableMapping": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The mapping of the app variables names to the Dialogflow session\nparameters names to be sent to the Dialogflow agent as input.\n"
                },
                "outputVariableMapping": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The mapping of the Dialogflow session parameters names to the app\nvariables names to be sent back to the CES agent after the Dialogflow\nagent execution ends.\n"
                },
                "respectResponseInterruptionSettings": {
                    "type": "boolean",
                    "description": "Indicates whether to respect the message-level interruption settings configured in the Dialogflow agent. * If false: all response messages from the Dialogflow agent follow the app-level barge-in settings. * If true: only response messages with [\u003cspan pulumi-lang-nodejs=\"`allowPlaybackInterruption`\" pulumi-lang-dotnet=\"`AllowPlaybackInterruption`\" pulumi-lang-go=\"`allowPlaybackInterruption`\" pulumi-lang-python=\"`allow_playback_interruption`\" pulumi-lang-yaml=\"`allowPlaybackInterruption`\" pulumi-lang-java=\"`allowPlaybackInterruption`\" pulumi-lang-hcl=\"`allow_playback_interruption`\"\u003e`allowPlaybackInterruption`\u003c/span\u003e](https://docs.cloud.google.com/dialogflow/cx/docs/reference/rpc/google.cloud.dialogflow.cx.v3#text) set to true will be interruptable, all other messages follow the app-level barge-in settings.\n"
                }
            },
            "type": "object",
            "required": [
                "agent",
                "flowId"
            ]
        },
        "gcp:ces/AgentToolset:AgentToolset": {
            "properties": {
                "toolIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The tools IDs to filter the toolset.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/AppAudioProcessingConfig:AppAudioProcessingConfig": {
            "properties": {
                "ambientSoundConfig": {
                    "$ref": "#/types/gcp:ces/AppAudioProcessingConfigAmbientSoundConfig:AppAudioProcessingConfigAmbientSoundConfig",
                    "description": "Configuration for the ambient sound to be played with the synthesized agent\nresponse, to enhance the naturalness of the conversation.\nStructure is documented below.\n"
                },
                "bargeInConfig": {
                    "$ref": "#/types/gcp:ces/AppAudioProcessingConfigBargeInConfig:AppAudioProcessingConfigBargeInConfig",
                    "description": "Configuration for how the user barge-in activities should be handled.\nStructure is documented below.\n"
                },
                "inactivityTimeout": {
                    "type": "string",
                    "description": "The duration of user inactivity (no speech or interaction) before the agent\nprompts the user for reengagement. If not set, the agent will not prompt\nthe user for reengagement.\n"
                },
                "synthesizeSpeechConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppAudioProcessingConfigSynthesizeSpeechConfig:AppAudioProcessingConfigSynthesizeSpeechConfig"
                    },
                    "description": "Configuration of how the agent response should be synthesized, mapping from\nthe language code to SynthesizeSpeechConfig.\nIf the configuration for the specified language code is not found, the\nconfiguration for the root language code will be used. For example, if the\nmap contains \"en-us\" and \"en\", and the specified language code is \"en-gb\",\nthen \"en\" configuration will be used.\nNote: Language code is case-insensitive.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppAudioProcessingConfigAmbientSoundConfig:AppAudioProcessingConfigAmbientSoundConfig": {
            "properties": {
                "gcsUri": {
                    "type": "string",
                    "description": "Ambient noise as a mono-channel, 16kHz WAV file stored in [Cloud\nStorage](https://cloud.google.com/storage).\nNote: Please make sure the CES service agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com` has\n`storage.objects.get` permission to the Cloud Storage object.\n"
                },
                "prebuiltAmbientSound": {
                    "type": "string",
                    "description": "Name of the prebuilt ambient sound.\nValid values are: - \u003cspan pulumi-lang-nodejs=\"\"coffeeShop\"\" pulumi-lang-dotnet=\"\"CoffeeShop\"\" pulumi-lang-go=\"\"coffeeShop\"\" pulumi-lang-python=\"\"coffee_shop\"\" pulumi-lang-yaml=\"\"coffeeShop\"\" pulumi-lang-java=\"\"coffeeShop\"\" pulumi-lang-hcl=\"\"coffee_shop\"\"\u003e\"coffeeShop\"\u003c/span\u003e - \"keyboard\" - \"keypad\" - \"hum\"\n-\u003cspan pulumi-lang-nodejs=\"\"office1\"\" pulumi-lang-dotnet=\"\"Office1\"\" pulumi-lang-go=\"\"office1\"\" pulumi-lang-python=\"\"office_1\"\" pulumi-lang-yaml=\"\"office1\"\" pulumi-lang-java=\"\"office1\"\" pulumi-lang-hcl=\"\"office_1\"\"\u003e\"office1\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"office2\"\" pulumi-lang-dotnet=\"\"Office2\"\" pulumi-lang-go=\"\"office2\"\" pulumi-lang-python=\"\"office_2\"\" pulumi-lang-yaml=\"\"office2\"\" pulumi-lang-java=\"\"office2\"\" pulumi-lang-hcl=\"\"office_2\"\"\u003e\"office2\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"office3\"\" pulumi-lang-dotnet=\"\"Office3\"\" pulumi-lang-go=\"\"office3\"\" pulumi-lang-python=\"\"office_3\"\" pulumi-lang-yaml=\"\"office3\"\" pulumi-lang-java=\"\"office3\"\" pulumi-lang-hcl=\"\"office_3\"\"\u003e\"office3\"\u003c/span\u003e\n-\u003cspan pulumi-lang-nodejs=\"\"room1\"\" pulumi-lang-dotnet=\"\"Room1\"\" pulumi-lang-go=\"\"room1\"\" pulumi-lang-python=\"\"room_1\"\" pulumi-lang-yaml=\"\"room1\"\" pulumi-lang-java=\"\"room1\"\" pulumi-lang-hcl=\"\"room_1\"\"\u003e\"room1\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"room2\"\" pulumi-lang-dotnet=\"\"Room2\"\" pulumi-lang-go=\"\"room2\"\" pulumi-lang-python=\"\"room_2\"\" pulumi-lang-yaml=\"\"room2\"\" pulumi-lang-java=\"\"room2\"\" pulumi-lang-hcl=\"\"room_2\"\"\u003e\"room2\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"room3\"\" pulumi-lang-dotnet=\"\"Room3\"\" pulumi-lang-go=\"\"room3\"\" pulumi-lang-python=\"\"room_3\"\" pulumi-lang-yaml=\"\"room3\"\" pulumi-lang-java=\"\"room3\"\" pulumi-lang-hcl=\"\"room_3\"\"\u003e\"room3\"\u003c/span\u003e\n-\u003cspan pulumi-lang-nodejs=\"\"room4\"\" pulumi-lang-dotnet=\"\"Room4\"\" pulumi-lang-go=\"\"room4\"\" pulumi-lang-python=\"\"room_4\"\" pulumi-lang-yaml=\"\"room4\"\" pulumi-lang-java=\"\"room4\"\" pulumi-lang-hcl=\"\"room_4\"\"\u003e\"room4\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"room5\"\" pulumi-lang-dotnet=\"\"Room5\"\" pulumi-lang-go=\"\"room5\"\" pulumi-lang-python=\"\"room_5\"\" pulumi-lang-yaml=\"\"room5\"\" pulumi-lang-java=\"\"room5\"\" pulumi-lang-hcl=\"\"room_5\"\"\u003e\"room5\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"airConditioner\"\" pulumi-lang-dotnet=\"\"AirConditioner\"\" pulumi-lang-go=\"\"airConditioner\"\" pulumi-lang-python=\"\"air_conditioner\"\" pulumi-lang-yaml=\"\"airConditioner\"\" pulumi-lang-java=\"\"airConditioner\"\" pulumi-lang-hcl=\"\"air_conditioner\"\"\u003e\"airConditioner\"\u003c/span\u003e\n"
                },
                "volumeGainDb": {
                    "type": "number",
                    "description": "Volume gain (in dB) of the normal native volume supported by\nambient noise, in the range [-96.0, 16.0]. If unset, or set to a value of\n0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB)\nwill play at approximately half the amplitude of the normal native signal\namplitude. A value of +6.0 (dB) will play at approximately twice the\namplitude of the normal native signal amplitude. We strongly recommend not\nto exceed +10 (dB) as there's usually no effective increase in loudness for\nany value greater than that.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppAudioProcessingConfigBargeInConfig:AppAudioProcessingConfigBargeInConfig": {
            "properties": {
                "bargeInAwareness": {
                    "type": "boolean",
                    "description": "If enabled, the agent will adapt its next response based on the assumption\nthat the user hasn't heard the full preceding agent message.\nThis should not be used in scenarios where agent responses are displayed\nvisually.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppAudioProcessingConfigSynthesizeSpeechConfig:AppAudioProcessingConfigSynthesizeSpeechConfig": {
            "properties": {
                "languageCode": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "speakingRate": {
                    "type": "number",
                    "description": "The speaking rate/speed in the range [0.25, 2.0]. 1.0 is the normal native\nspeed supported by the specific voice. 2.0 is twice as fast, and 0.5 is\nhalf as fast. Values outside of the range [0.25, 2.0] will return an error.\n"
                },
                "voice": {
                    "type": "string",
                    "description": "The name of the voice. If not set, the service will choose a\nvoice based on the other parameters such as language_code.\nFor the list of available voices, please refer to Supported voices and\nlanguages from Cloud Text-to-Speech.\n"
                }
            },
            "type": "object",
            "required": [
                "languageCode"
            ]
        },
        "gcp:ces/AppClientCertificateSettings:AppClientCertificateSettings": {
            "properties": {
                "passphrase": {
                    "type": "string",
                    "description": "The passphrase to decrypt the private key.\nShould be left unset if the private key is not encrypted.\n"
                },
                "privateKey": {
                    "type": "string",
                    "description": "The name of the SecretManager secret version resource\nstoring the private key encoded in PEM format.\nFormat: projects/{project}/secrets/{secret}/versions/{version}\n"
                },
                "tlsCertificate": {
                    "type": "string",
                    "description": "The TLS certificate encoded in PEM format.\nThis string must include the begin header and end footer lines.\n"
                }
            },
            "type": "object",
            "required": [
                "privateKey",
                "tlsCertificate"
            ]
        },
        "gcp:ces/AppDataStoreSettings:AppDataStoreSettings": {
            "properties": {
                "engines": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppDataStoreSettingsEngine:AppDataStoreSettingsEngine"
                    },
                    "description": "(Output)\nThe engines for the app.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDataStoreSettingsEngines\"\" pulumi-lang-dotnet=\"\"NestedDataStoreSettingsEngines\"\" pulumi-lang-go=\"\"nestedDataStoreSettingsEngines\"\" pulumi-lang-python=\"\"nested_data_store_settings_engines\"\" pulumi-lang-yaml=\"\"nestedDataStoreSettingsEngines\"\" pulumi-lang-java=\"\"nestedDataStoreSettingsEngines\"\" pulumi-lang-hcl=\"\"nested_data_store_settings_engines\"\"\u003e\"nestedDataStoreSettingsEngines\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`engines`\" pulumi-lang-dotnet=\"`Engines`\" pulumi-lang-go=\"`engines`\" pulumi-lang-python=\"`engines`\" pulumi-lang-yaml=\"`engines`\" pulumi-lang-java=\"`engines`\" pulumi-lang-hcl=\"`engines`\"\u003e`engines`\u003c/span\u003e block contains:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "engines"
                    ]
                }
            }
        },
        "gcp:ces/AppDataStoreSettingsEngine:AppDataStoreSettingsEngine": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Identifier. The unique identifier of the app.\nFormat: `projects/{project}/locations/{location}/apps/{app}`\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the engine.\nPossible values:\nENGINE_TYPE_SEARCH\nENGINE_TYPE_CHAT\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "type"
                    ]
                }
            }
        },
        "gcp:ces/AppDefaultChannelProfile:AppDefaultChannelProfile": {
            "properties": {
                "channelType": {
                    "type": "string",
                    "description": "The type of the channel profile.\nPossible values:\nUNKNOWN\nWEB_UI\nAPI\nTWILIO\nGOOGLE_TELEPHONY_PLATFORM\nCONTACT_CENTER_AS_A_SERVICE\n"
                },
                "disableBargeInControl": {
                    "type": "boolean",
                    "description": "Whether to disable user barge-in in the conversation.\n- true: User interruptions are disabled while the agent is speaking.\n- false: The agent retains automatic control over when the user can interrupt.\n"
                },
                "disableDtmf": {
                    "type": "boolean",
                    "description": "Whether to disable DTMF (dual-tone multi-frequency).\n"
                },
                "personaProperty": {
                    "$ref": "#/types/gcp:ces/AppDefaultChannelProfilePersonaProperty:AppDefaultChannelProfilePersonaProperty",
                    "description": "Represents the persona property of a channel.\nStructure is documented below.\n"
                },
                "profileId": {
                    "type": "string",
                    "description": "The unique identifier of the channel profile.\n"
                },
                "webWidgetConfig": {
                    "$ref": "#/types/gcp:ces/AppDefaultChannelProfileWebWidgetConfig:AppDefaultChannelProfileWebWidgetConfig",
                    "description": "Message for configuration for the web widget.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppDefaultChannelProfilePersonaProperty:AppDefaultChannelProfilePersonaProperty": {
            "properties": {
                "persona": {
                    "type": "string",
                    "description": "The persona of the channel.\nPossible values:\nUNKNOWN\nCONCISE\nCHATTY\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppDefaultChannelProfileWebWidgetConfig:AppDefaultChannelProfileWebWidgetConfig": {
            "properties": {
                "modality": {
                    "type": "string",
                    "description": "The modality of the web widget.\nPossible values:\nUNKNOWN_MODALITY\nCHAT_AND_VOICE\nVOICE_ONLY\nCHAT_ONLY\n"
                },
                "theme": {
                    "type": "string",
                    "description": "The theme of the web widget.\nPossible values:\nUNKNOWN_THEME\nLIGHT\nDARK\n"
                },
                "webWidgetTitle": {
                    "type": "string",
                    "description": "The title of the web widget.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppEvaluationMetricsThresholds:AppEvaluationMetricsThresholds": {
            "properties": {
                "goldenEvaluationMetricsThresholds": {
                    "$ref": "#/types/gcp:ces/AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholds:AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholds",
                    "description": "Settings for golden evaluations.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholds:AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholds": {
            "properties": {
                "expectationLevelMetricsThresholds": {
                    "$ref": "#/types/gcp:ces/AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholdsExpectationLevelMetricsThresholds:AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholdsExpectationLevelMetricsThresholds",
                    "description": "Expectation level metrics thresholds.\nStructure is documented below.\n"
                },
                "turnLevelMetricsThresholds": {
                    "$ref": "#/types/gcp:ces/AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholdsTurnLevelMetricsThresholds:AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholdsTurnLevelMetricsThresholds",
                    "description": "Turn level metrics thresholds.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholdsExpectationLevelMetricsThresholds:AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholdsExpectationLevelMetricsThresholds": {
            "properties": {
                "toolInvocationParameterCorrectnessThreshold": {
                    "type": "number",
                    "description": "The success threshold for individual tool invocation parameter\ncorrectness. Must be a float between 0 and 1. Default is 1.0.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholdsTurnLevelMetricsThresholds:AppEvaluationMetricsThresholdsGoldenEvaluationMetricsThresholdsTurnLevelMetricsThresholds": {
            "properties": {
                "overallToolInvocationCorrectnessThreshold": {
                    "type": "number",
                    "description": "The success threshold for overall tool invocation correctness. Must be\na float between 0 and 1. Default is 1.0.\n"
                },
                "semanticSimilaritySuccessThreshold": {
                    "type": "integer",
                    "description": "The success threshold for semantic similarity. Must be an integer\nbetween 0 and 4. Default is \u003e= 3.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppLanguageSettings:AppLanguageSettings": {
            "properties": {
                "defaultLanguageCode": {
                    "type": "string",
                    "description": "The default language code of the app.\n"
                },
                "enableMultilingualSupport": {
                    "type": "boolean",
                    "description": "Enables multilingual support. If true, agents in the app will use pre-built\ninstructions to improve handling of multilingual input.\n"
                },
                "fallbackAction": {
                    "type": "string",
                    "description": "The action to perform when an agent receives input in an unsupported\nlanguage.\nThis can be a predefined action or a custom tool call.\nValid values are:\n- A tool's full resource name, which triggers a specific tool execution.\n- A predefined system action, such as \"escalate\" or \"exit\", which triggers\nan EndSession signal with corresponding metadata\nto terminate the conversation.\n"
                },
                "supportedLanguageCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of languages codes supported by the app, in addition to the\n\u003cspan pulumi-lang-nodejs=\"`defaultLanguageCode`\" pulumi-lang-dotnet=\"`DefaultLanguageCode`\" pulumi-lang-go=\"`defaultLanguageCode`\" pulumi-lang-python=\"`default_language_code`\" pulumi-lang-yaml=\"`defaultLanguageCode`\" pulumi-lang-java=\"`defaultLanguageCode`\" pulumi-lang-hcl=\"`default_language_code`\"\u003e`defaultLanguageCode`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppLoggingSettings:AppLoggingSettings": {
            "properties": {
                "audioRecordingConfig": {
                    "$ref": "#/types/gcp:ces/AppLoggingSettingsAudioRecordingConfig:AppLoggingSettingsAudioRecordingConfig",
                    "description": "Configuration for how the audio interactions should be recorded.\nStructure is documented below.\n"
                },
                "bigqueryExportSettings": {
                    "$ref": "#/types/gcp:ces/AppLoggingSettingsBigqueryExportSettings:AppLoggingSettingsBigqueryExportSettings",
                    "description": "Settings to describe the BigQuery export behaviors for the app.\nStructure is documented below.\n"
                },
                "cloudLoggingSettings": {
                    "$ref": "#/types/gcp:ces/AppLoggingSettingsCloudLoggingSettings:AppLoggingSettingsCloudLoggingSettings",
                    "description": "Settings to describe the Cloud Logging behaviors for the app.\nStructure is documented below.\n"
                },
                "conversationLoggingSettings": {
                    "$ref": "#/types/gcp:ces/AppLoggingSettingsConversationLoggingSettings:AppLoggingSettingsConversationLoggingSettings",
                    "description": "Settings to describe the conversation logging behaviors for the app.\nStructure is documented below.\n"
                },
                "redactionConfig": {
                    "$ref": "#/types/gcp:ces/AppLoggingSettingsRedactionConfig:AppLoggingSettingsRedactionConfig",
                    "description": "Configuration to instruct how sensitive data should be handled.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppLoggingSettingsAudioRecordingConfig:AppLoggingSettingsAudioRecordingConfig": {
            "properties": {
                "gcsBucket": {
                    "type": "string",
                    "description": "The [Cloud Storage](https://cloud.google.com/storage) bucket to store the\nsession audio recordings. The URI must start with \"gs://\".\nNote: If the Cloud Storage bucket is in a different project from the app,\nyou should grant `storage.objects.create` permission to the CES service\nagent `service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "gcsPathPrefix": {
                    "type": "string",
                    "description": "The Cloud Storage path prefix for audio recordings.\nThis prefix can include the following placeholders, which will be\ndynamically substituted at serving time:\n- $project:   project ID\n- $location:  app location\n- $app:       app ID\n- $date:      session date in YYYY-MM-DD format\n- $session:   session ID\nIf the path prefix is not specified, the default prefix\n`$project/$location/$app/$date/$session/` will be used.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppLoggingSettingsBigqueryExportSettings:AppLoggingSettingsBigqueryExportSettings": {
            "properties": {
                "dataset": {
                    "type": "string",
                    "description": "The BigQuery dataset to export the data to.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Indicates whether the BigQuery export is enabled.\n"
                },
                "project": {
                    "type": "string",
                    "description": "The project ID of the BigQuery dataset to export the data to.\nNote: If the BigQuery dataset is in a different project from the app, you should grant\nroles/bigquery.admin role to the CES service agent service-\u003cPROJECT-\nNUMBER\u003e@gcp-sa-ces.iam.gserviceaccount.com.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppLoggingSettingsCloudLoggingSettings:AppLoggingSettingsCloudLoggingSettings": {
            "properties": {
                "enableCloudLogging": {
                    "type": "boolean",
                    "description": "Whether to enable Cloud Logging for the sessions.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppLoggingSettingsConversationLoggingSettings:AppLoggingSettingsConversationLoggingSettings": {
            "properties": {
                "disableConversationLogging": {
                    "type": "boolean",
                    "description": "Whether to disable conversation logging for the sessions.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppLoggingSettingsRedactionConfig:AppLoggingSettingsRedactionConfig": {
            "properties": {
                "deidentifyTemplate": {
                    "type": "string",
                    "description": "[DLP](https://cloud.google.com/dlp/docs) deidentify template name to\ninstruct on how to de-identify content.\nFormat:\n`projects/{project}/locations/{location}/deidentifyTemplates/{deidentify_template}`\n"
                },
                "enableRedaction": {
                    "type": "boolean",
                    "description": "If true, redaction will be applied in various logging scenarios, including\nconversation history, Cloud Logging and audio recording.\n"
                },
                "inspectTemplate": {
                    "type": "string",
                    "description": "[DLP](https://cloud.google.com/dlp/docs) inspect template name to configure\ndetection of sensitive data types.\nFormat:\n`projects/{project}/locations/{location}/inspectTemplates/{inspect_template}`\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppModelSettings:AppModelSettings": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "The LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "If set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppTimeZoneSettings:AppTimeZoneSettings": {
            "properties": {
                "timeZone": {
                    "type": "string",
                    "description": "The time zone of the app from the time zone database, e.g., America/Los_Angeles, Europe/Paris.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/AppVariableDeclaration:AppVariableDeclaration": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the variable.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the variable. The name must start with a letter or underscore\nand contain only letters, numbers, or underscores.\n"
                },
                "schema": {
                    "$ref": "#/types/gcp:ces/AppVariableDeclarationSchema:AppVariableDeclarationSchema",
                    "description": "Represents a select subset of an OpenAPI 3.0 schema object.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "name",
                "schema"
            ]
        },
        "gcp:ces/AppVariableDeclarationSchema:AppVariableDeclarationSchema": {
            "properties": {
                "additionalProperties": {
                    "type": "string",
                    "description": "Optional. Defines the schema for additional properties allowed in an object.\nThe value must be a valid JSON string representing the Schema object.\n(Note: OpenAPI also allows a boolean, this definition expects a Schema JSON).\n"
                },
                "anyOf": {
                    "type": "string",
                    "description": "Optional. The instance value should be valid against at least one of the schemas in this list.\n"
                },
                "default": {
                    "type": "string",
                    "description": "Optional. Default value of the data. Represents a dynamically typed value\nwhich can be either null, a number, a string, a boolean, a struct,\nor a list of values. The provided default value must be encoded as a JSON string.\nUse \u003cspan pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\" pulumi-lang-hcl=\"`jsonencode`\"\u003e`jsonencode`\u003c/span\u003e in Terraform HCL to encode the default value.\n"
                },
                "defs": {
                    "type": "string",
                    "description": "A map of definitions for use by ref. Only allowed at the root of the schema.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the data.\n"
                },
                "enums": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Possible values of the element of primitive type with enum format.\nExamples:\n1. We can define direction as :\n{type:STRING, format:enum, enum:[\"EAST\", NORTH\", \"SOUTH\", \"WEST\"]}\n2. We can define apartment number as :\n{type:INTEGER, format:enum, enum:[\"101\", \"201\", \"301\"]}\n"
                },
                "items": {
                    "type": "string",
                    "description": "Schema of the elements of Type.ARRAY.\n"
                },
                "nullable": {
                    "type": "boolean",
                    "description": "Indicates if the value may be null.\n"
                },
                "prefixItems": {
                    "type": "string",
                    "description": "Optional. Schemas of initial elements of Type.ARRAY.\n"
                },
                "properties": {
                    "type": "string",
                    "description": "Properties of Type.OBJECT.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "Allows indirect references between schema nodes. The value should be a\nvalid reference to a child of the root \u003cspan pulumi-lang-nodejs=\"`defs`\" pulumi-lang-dotnet=\"`Defs`\" pulumi-lang-go=\"`defs`\" pulumi-lang-python=\"`defs`\" pulumi-lang-yaml=\"`defs`\" pulumi-lang-java=\"`defs`\" pulumi-lang-hcl=\"`defs`\"\u003e`defs`\u003c/span\u003e.\nFor example, the following schema defines a reference to a schema node\nnamed \"Pet\":\ntype: object\nproperties:\npet:\nref: #/defs/Pet\ndefs:\nPet:\ntype: object\nproperties:\nname:\ntype: string\nThe value of the \"pet\" property is a reference to the schema node\nnamed \"Pet\".\nSee details in\nhttps://json-schema.org/understanding-json-schema/structuring.\n"
                },
                "requireds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required properties of Type.OBJECT.\n"
                },
                "title": {
                    "type": "string",
                    "description": "The title of the schema.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the data.\nPossible values:\nSTRING\nINTEGER\nNUMBER\nBOOLEAN\nOBJECT\nARRAY\n"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "description": "Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:ces/AppVersionSnapshot:AppVersionSnapshot": {
            "properties": {
                "agents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgent:AppVersionSnapshotAgent"
                    },
                    "description": "(Output)\nList of agents in the app.\nStructure is documented below.\n"
                },
                "apps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotApp:AppVersionSnapshotApp"
                    },
                    "description": "Resource ID segment making up resource \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e. It identifies the resource within its parent collection as described in https://google.aip.dev/122.\n"
                },
                "examples": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExample:AppVersionSnapshotExample"
                    },
                    "description": "(Output)\nList of examples in the app.\nStructure is documented below.\n"
                },
                "guardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrail:AppVersionSnapshotGuardrail"
                    },
                    "description": "(Output)\nList of guardrails for the app.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`\n"
                },
                "tools": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotTool:AppVersionSnapshotTool"
                    },
                    "description": "(Output)\nList of available tools for the agent.\nFormat: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`\n"
                },
                "toolsets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolset:AppVersionSnapshotToolset"
                    },
                    "description": "(Output)\nList of toolsets for the agent.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agents",
                        "apps",
                        "examples",
                        "guardrails",
                        "tools",
                        "toolsets"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgent:AppVersionSnapshotAgent": {
            "properties": {
                "afterAgentCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentAfterAgentCallback:AppVersionSnapshotAgentAfterAgentCallback"
                    },
                    "description": "(Output)\nThe callbacks to execute after the agent is called.\nThe provided callbacks are executed sequentially in the exact order they\nare given in the list. If a callback returns an overridden response,\nexecution stops and any remaining callbacks are skipped.\nStructure is documented below.\n"
                },
                "afterModelCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentAfterModelCallback:AppVersionSnapshotAgentAfterModelCallback"
                    },
                    "description": "(Output)\nThe callbacks to execute after the model is called. If there are multiple\ncalls to the model, the callback will be executed multiple times.\nThe provided callbacks are executed sequentially in the exact order they\nare given in the list. If a callback returns an overridden response,\nexecution stops and any remaining callbacks are skipped.\nStructure is documented below.\n"
                },
                "afterToolCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentAfterToolCallback:AppVersionSnapshotAgentAfterToolCallback"
                    },
                    "description": "(Output)\nThe callbacks to execute after the tool is invoked. If there are multiple\ntool invocations, the callback will be executed multiple times.\nThe provided callbacks are executed sequentially in the exact order they\nare given in the list. If a callback returns an overridden response,\nexecution stops and any remaining callbacks are skipped.\nStructure is documented below.\n"
                },
                "beforeAgentCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentBeforeAgentCallback:AppVersionSnapshotAgentBeforeAgentCallback"
                    },
                    "description": "(Output)\nThe callbacks to execute before the agent is called.\nThe provided callbacks are executed sequentially in the exact order they\nare given in the list. If a callback returns an overridden response,\nexecution stops and any remaining callbacks are skipped.\nStructure is documented below.\n"
                },
                "beforeModelCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentBeforeModelCallback:AppVersionSnapshotAgentBeforeModelCallback"
                    },
                    "description": "(Output)\nThe callbacks to execute before the model is called. If there are multiple\ncalls to the model, the callback will be executed multiple times.\nThe provided callbacks are executed sequentially in the exact order they\nare given in the list. If a callback returns an overridden response,\nexecution stops and any remaining callbacks are skipped.\nStructure is documented below.\n"
                },
                "beforeToolCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentBeforeToolCallback:AppVersionSnapshotAgentBeforeToolCallback"
                    },
                    "description": "(Output)\nThe callbacks to execute before the tool is invoked. If there are multiple\ntool invocations, the callback will be executed multiple times.\nThe provided callbacks are executed sequentially in the exact order they\nare given in the list. If a callback returns an overridden response,\nexecution stops and any remaining callbacks are skipped.\nStructure is documented below.\n"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of child agents in the agent tree.\nFormat: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "(Output)\nETag used to ensure the object hasn't changed during a read-modify-write\noperation. If the etag is empty, the update will overwrite any concurrent\nchanges.\n"
                },
                "generatedSummary": {
                    "type": "string",
                    "description": "(Output)\nIf the tool is generated by the LLM assistant, this field contains a\ndescriptive summary of the generation.\n"
                },
                "guardrails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of guardrails for the app.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "(Output)\nInstructions for the LLM model to guide the agent's behavior.\n"
                },
                "llmAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentLlmAgent:AppVersionSnapshotAgentLlmAgent"
                    },
                    "description": "(Output)\nDefault agent type. The agent uses instructions and callbacks specified in\nthe agent to perform the task using a large language model.\n"
                },
                "modelSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentModelSetting:AppVersionSnapshotAgentModelSetting"
                    },
                    "description": "(Output)\nModel settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "remoteDialogflowAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentRemoteDialogflowAgent:AppVersionSnapshotAgentRemoteDialogflowAgent"
                    },
                    "description": "(Output)\nThe agent which will transfer execution to an existing remote\n[Dialogflow](https://cloud.google.com/dialogflow/cx/docs/concept/console-conversational-agents)\nagent flow. The corresponding Dialogflow agent will process subsequent user\nqueries until the session ends or flow ends and the control is transferred\nback to the parent CES agent.\nStructure is documented below.\n"
                },
                "tools": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of available tools for the agent.\nFormat: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`\n"
                },
                "toolsets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAgentToolset:AppVersionSnapshotAgentToolset"
                    },
                    "description": "(Output)\nList of toolsets for the agent.\nStructure is documented below.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was last updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "afterAgentCallbacks",
                        "afterModelCallbacks",
                        "afterToolCallbacks",
                        "beforeAgentCallbacks",
                        "beforeModelCallbacks",
                        "beforeToolCallbacks",
                        "childAgents",
                        "createTime",
                        "description",
                        "displayName",
                        "etag",
                        "generatedSummary",
                        "guardrails",
                        "instruction",
                        "llmAgents",
                        "modelSettings",
                        "name",
                        "remoteDialogflowAgents",
                        "tools",
                        "toolsets",
                        "updateTime"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentAfterAgentCallback:AppVersionSnapshotAgentAfterAgentCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentAfterModelCallback:AppVersionSnapshotAgentAfterModelCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentAfterToolCallback:AppVersionSnapshotAgentAfterToolCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentBeforeAgentCallback:AppVersionSnapshotAgentBeforeAgentCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentBeforeModelCallback:AppVersionSnapshotAgentBeforeModelCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentBeforeToolCallback:AppVersionSnapshotAgentBeforeToolCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentLlmAgent:AppVersionSnapshotAgentLlmAgent": {
            "type": "object"
        },
        "gcp:ces/AppVersionSnapshotAgentModelSetting:AppVersionSnapshotAgentModelSetting": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "(Output)\nThe LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "(Output)\nIf set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "model",
                        "temperature"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentRemoteDialogflowAgent:AppVersionSnapshotAgentRemoteDialogflowAgent": {
            "properties": {
                "agent": {
                    "type": "string",
                    "description": "(Output)\nThe name of the agent to transfer the conversation to. The agent must be\nin the same app as the current agent.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/agents/{agent}`\n"
                },
                "environmentId": {
                    "type": "string",
                    "description": "(Output)\nThe environment ID of the Dialogflow agent be used for the agent\nexecution. If not specified, the draft environment will be used.\n"
                },
                "flowId": {
                    "type": "string",
                    "description": "(Output)\nThe flow ID of the flow in the Dialogflow agent.\n"
                },
                "inputVariableMapping": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe mapping of the app variables names to the Dialogflow session\nparameters names to be sent to the Dialogflow agent as input.\n"
                },
                "outputVariableMapping": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe mapping of the Dialogflow session parameters names to the app\nvariables names to be sent back to the CES agent after the Dialogflow\nagent execution ends.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agent",
                        "environmentId",
                        "flowId",
                        "inputVariableMapping",
                        "outputVariableMapping"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAgentToolset:AppVersionSnapshotAgentToolset": {
            "properties": {
                "toolIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe tools IDs to filter the toolset.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "(Output)\nThe resource name of the Toolset from which this tool is derived.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "toolIds",
                        "toolset"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotApp:AppVersionSnapshotApp": {
            "properties": {
                "audioProcessingConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppAudioProcessingConfig:AppVersionSnapshotAppAudioProcessingConfig"
                    },
                    "description": "(Output)\nConfiguration for how the input and output audio should be processed and\ndelivered.\nStructure is documented below.\n"
                },
                "clientCertificateSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppClientCertificateSetting:AppVersionSnapshotAppClientCertificateSetting"
                    },
                    "description": "(Output)\nThe default client certificate settings for the app.\nStructure is documented below.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was created.\n"
                },
                "dataStoreSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppDataStoreSetting:AppVersionSnapshotAppDataStoreSetting"
                    },
                    "description": "(Output)\nData store related settings for the app.\nStructure is documented below.\n"
                },
                "defaultChannelProfiles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppDefaultChannelProfile:AppVersionSnapshotAppDefaultChannelProfile"
                    },
                    "description": "(Output)\nA ChannelProfile configures the agent's behavior for a specific communication\nchannel, such as web UI or telephony.\nStructure is documented below.\n"
                },
                "deploymentCount": {
                    "type": "integer",
                    "description": "(Output)\nNumber of deployments in the app.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "(Output)\nETag used to ensure the object hasn't changed during a read-modify-write\noperation. If the etag is empty, the update will overwrite any concurrent\nchanges.\n"
                },
                "evaluationMetricsThresholds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppEvaluationMetricsThreshold:AppVersionSnapshotAppEvaluationMetricsThreshold"
                    },
                    "description": "(Output)\nThreshold settings for metrics in an Evaluation.\nStructure is documented below.\n"
                },
                "globalInstruction": {
                    "type": "string",
                    "description": "(Output)\nInstructions for all the agents in the app.\nYou can use this instruction to set up a stable identity or personality\nacross all the agents.\n"
                },
                "guardrails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of guardrails for the app.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/guardrails/{guardrail}`\n"
                },
                "languageSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppLanguageSetting:AppVersionSnapshotAppLanguageSetting"
                    },
                    "description": "(Output)\nLanguage settings of the app.\nStructure is documented below.\n"
                },
                "loggingSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppLoggingSetting:AppVersionSnapshotAppLoggingSetting"
                    },
                    "description": "(Output)\nSettings to describe the logging behaviors for the app.\nStructure is documented below.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nMetadata about the app. This field can be used to store additional\ninformation relevant to the app's details or intended usages.\n"
                },
                "modelSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppModelSetting:AppVersionSnapshotAppModelSetting"
                    },
                    "description": "(Output)\nModel settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "rootAgent": {
                    "type": "string",
                    "description": "(Output)\nThe root agent is the entry point of the app.\nFormat: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`\n"
                },
                "timeZoneSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppTimeZoneSetting:AppVersionSnapshotAppTimeZoneSetting"
                    },
                    "description": "(Output)\nTimeZone settings of the app.\nStructure is documented below.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was last updated.\n"
                },
                "variableDeclarations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppVariableDeclaration:AppVersionSnapshotAppVariableDeclaration"
                    },
                    "description": "(Output)\nThe declarations of the variables.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "audioProcessingConfigs",
                        "clientCertificateSettings",
                        "createTime",
                        "dataStoreSettings",
                        "defaultChannelProfiles",
                        "deploymentCount",
                        "description",
                        "displayName",
                        "etag",
                        "evaluationMetricsThresholds",
                        "globalInstruction",
                        "guardrails",
                        "languageSettings",
                        "loggingSettings",
                        "metadata",
                        "modelSettings",
                        "name",
                        "rootAgent",
                        "timeZoneSettings",
                        "updateTime",
                        "variableDeclarations"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppAudioProcessingConfig:AppVersionSnapshotAppAudioProcessingConfig": {
            "properties": {
                "ambientSoundConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppAudioProcessingConfigAmbientSoundConfig:AppVersionSnapshotAppAudioProcessingConfigAmbientSoundConfig"
                    },
                    "description": "(Output)\nConfiguration for the ambient sound to be played with the synthesized agent\nresponse, to enhance the naturalness of the conversation.\nStructure is documented below.\n"
                },
                "bargeInConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppAudioProcessingConfigBargeInConfig:AppVersionSnapshotAppAudioProcessingConfigBargeInConfig"
                    },
                    "description": "(Output)\nConfiguration for how the user barge-in activities should be handled.\nStructure is documented below.\n"
                },
                "inactivityTimeout": {
                    "type": "string",
                    "description": "(Output)\nThe duration of user inactivity (no speech or interaction) before the agent\nprompts the user for reengagement. If not set, the agent will not prompt\nthe user for reengagement.\n"
                },
                "synthesizeSpeechConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppAudioProcessingConfigSynthesizeSpeechConfig:AppVersionSnapshotAppAudioProcessingConfigSynthesizeSpeechConfig"
                    },
                    "description": "(Output)\nConfiguration of how the agent response should be synthesized, mapping from\nthe language code to SynthesizeSpeechConfig.\nIf the configuration for the specified language code is not found, the\nconfiguration for the root language code will be used. For example, if the\nmap contains \"en-us\" and \"en\", and the specified language code is \"en-gb\",\nthen \"en\" configuration will be used.\nNote: Language code is case-insensitive.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ambientSoundConfigs",
                        "bargeInConfigs",
                        "inactivityTimeout",
                        "synthesizeSpeechConfigs"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppAudioProcessingConfigAmbientSoundConfig:AppVersionSnapshotAppAudioProcessingConfigAmbientSoundConfig": {
            "properties": {
                "gcsUri": {
                    "type": "string",
                    "description": "(Output)\nAmbient noise as a mono-channel, 16kHz WAV file stored in [Cloud\nStorage](https://cloud.google.com/storage).\nNote: Please make sure the CES service agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com` has\n`storage.objects.get` permission to the Cloud Storage object.\n"
                },
                "prebuiltAmbientSound": {
                    "type": "string",
                    "description": "(Output)\nName of the prebuilt ambient sound.\nValid values are: - \u003cspan pulumi-lang-nodejs=\"\"coffeeShop\"\" pulumi-lang-dotnet=\"\"CoffeeShop\"\" pulumi-lang-go=\"\"coffeeShop\"\" pulumi-lang-python=\"\"coffee_shop\"\" pulumi-lang-yaml=\"\"coffeeShop\"\" pulumi-lang-java=\"\"coffeeShop\"\" pulumi-lang-hcl=\"\"coffee_shop\"\"\u003e\"coffeeShop\"\u003c/span\u003e - \"keyboard\" - \"keypad\" - \"hum\"\n-\u003cspan pulumi-lang-nodejs=\"\"office1\"\" pulumi-lang-dotnet=\"\"Office1\"\" pulumi-lang-go=\"\"office1\"\" pulumi-lang-python=\"\"office_1\"\" pulumi-lang-yaml=\"\"office1\"\" pulumi-lang-java=\"\"office1\"\" pulumi-lang-hcl=\"\"office_1\"\"\u003e\"office1\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"office2\"\" pulumi-lang-dotnet=\"\"Office2\"\" pulumi-lang-go=\"\"office2\"\" pulumi-lang-python=\"\"office_2\"\" pulumi-lang-yaml=\"\"office2\"\" pulumi-lang-java=\"\"office2\"\" pulumi-lang-hcl=\"\"office_2\"\"\u003e\"office2\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"office3\"\" pulumi-lang-dotnet=\"\"Office3\"\" pulumi-lang-go=\"\"office3\"\" pulumi-lang-python=\"\"office_3\"\" pulumi-lang-yaml=\"\"office3\"\" pulumi-lang-java=\"\"office3\"\" pulumi-lang-hcl=\"\"office_3\"\"\u003e\"office3\"\u003c/span\u003e\n-\u003cspan pulumi-lang-nodejs=\"\"room1\"\" pulumi-lang-dotnet=\"\"Room1\"\" pulumi-lang-go=\"\"room1\"\" pulumi-lang-python=\"\"room_1\"\" pulumi-lang-yaml=\"\"room1\"\" pulumi-lang-java=\"\"room1\"\" pulumi-lang-hcl=\"\"room_1\"\"\u003e\"room1\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"room2\"\" pulumi-lang-dotnet=\"\"Room2\"\" pulumi-lang-go=\"\"room2\"\" pulumi-lang-python=\"\"room_2\"\" pulumi-lang-yaml=\"\"room2\"\" pulumi-lang-java=\"\"room2\"\" pulumi-lang-hcl=\"\"room_2\"\"\u003e\"room2\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"room3\"\" pulumi-lang-dotnet=\"\"Room3\"\" pulumi-lang-go=\"\"room3\"\" pulumi-lang-python=\"\"room_3\"\" pulumi-lang-yaml=\"\"room3\"\" pulumi-lang-java=\"\"room3\"\" pulumi-lang-hcl=\"\"room_3\"\"\u003e\"room3\"\u003c/span\u003e\n-\u003cspan pulumi-lang-nodejs=\"\"room4\"\" pulumi-lang-dotnet=\"\"Room4\"\" pulumi-lang-go=\"\"room4\"\" pulumi-lang-python=\"\"room_4\"\" pulumi-lang-yaml=\"\"room4\"\" pulumi-lang-java=\"\"room4\"\" pulumi-lang-hcl=\"\"room_4\"\"\u003e\"room4\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"room5\"\" pulumi-lang-dotnet=\"\"Room5\"\" pulumi-lang-go=\"\"room5\"\" pulumi-lang-python=\"\"room_5\"\" pulumi-lang-yaml=\"\"room5\"\" pulumi-lang-java=\"\"room5\"\" pulumi-lang-hcl=\"\"room_5\"\"\u003e\"room5\"\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"\"airConditioner\"\" pulumi-lang-dotnet=\"\"AirConditioner\"\" pulumi-lang-go=\"\"airConditioner\"\" pulumi-lang-python=\"\"air_conditioner\"\" pulumi-lang-yaml=\"\"airConditioner\"\" pulumi-lang-java=\"\"airConditioner\"\" pulumi-lang-hcl=\"\"air_conditioner\"\"\u003e\"airConditioner\"\u003c/span\u003e\n"
                },
                "volumeGainDb": {
                    "type": "number",
                    "description": "(Output)\nVolume gain (in dB) of the normal native volume supported by\nambient noise, in the range [-96.0, 16.0]. If unset, or set to a value of\n0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB)\nwill play at approximately half the amplitude of the normal native signal\namplitude. A value of +6.0 (dB) will play at approximately twice the\namplitude of the normal native signal amplitude. We strongly recommend not\nto exceed +10 (dB) as there's usually no effective increase in loudness for\nany value greater than that.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "gcsUri",
                        "prebuiltAmbientSound",
                        "volumeGainDb"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppAudioProcessingConfigBargeInConfig:AppVersionSnapshotAppAudioProcessingConfigBargeInConfig": {
            "properties": {
                "bargeInAwareness": {
                    "type": "boolean",
                    "description": "(Output)\nIf enabled, the agent will adapt its next response based on the assumption\nthat the user hasn't heard the full preceding agent message.\nThis should not be used in scenarios where agent responses are displayed\nvisually.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "bargeInAwareness"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppAudioProcessingConfigSynthesizeSpeechConfig:AppVersionSnapshotAppAudioProcessingConfigSynthesizeSpeechConfig": {
            "properties": {
                "languageCode": {
                    "type": "string",
                    "description": "(Required) The identifier for this object. Format specified above.\n"
                },
                "speakingRate": {
                    "type": "number",
                    "description": "(Output)\nThe speaking rate/speed in the range [0.25, 2.0]. 1.0 is the normal native\nspeed supported by the specific voice. 2.0 is twice as fast, and 0.5 is\nhalf as fast. Values outside of the range [0.25, 2.0] will return an error.\n"
                },
                "voice": {
                    "type": "string",
                    "description": "(Output)\nThe name of the voice. If not set, the service will choose a\nvoice based on the other parameters such as language_code.\nFor the list of available voices, please refer to Supported voices and\nlanguages from Cloud Text-to-Speech.\n"
                }
            },
            "type": "object",
            "required": [
                "languageCode"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "languageCode",
                        "speakingRate",
                        "voice"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppClientCertificateSetting:AppVersionSnapshotAppClientCertificateSetting": {
            "properties": {
                "passphrase": {
                    "type": "string",
                    "description": "(Output)\nThe passphrase to decrypt the private key.\nShould be left unset if the private key is not encrypted.\n"
                },
                "privateKey": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource\nstoring the private key encoded in PEM format.\nFormat: projects/{project}/secrets/{secret}/versions/{version}\n"
                },
                "tlsCertificate": {
                    "type": "string",
                    "description": "(Output)\nThe TLS certificate encoded in PEM format.\nThis string must include the begin header and end footer lines.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "passphrase",
                        "privateKey",
                        "tlsCertificate"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppDataStoreSetting:AppVersionSnapshotAppDataStoreSetting": {
            "properties": {
                "engines": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppDataStoreSettingEngine:AppVersionSnapshotAppDataStoreSettingEngine"
                    },
                    "description": "(Output)\nThe engines for the app.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "engines"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppDataStoreSettingEngine:AppVersionSnapshotAppDataStoreSettingEngine": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe type of the data store. This field is readonly and populated by the\nserver.\nPossible values:\nPUBLIC_WEB\nUNSTRUCTURED\nFAQ\nCONNECTOR\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "type"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppDefaultChannelProfile:AppVersionSnapshotAppDefaultChannelProfile": {
            "properties": {
                "channelType": {
                    "type": "string",
                    "description": "(Output)\nThe type of the channel profile.\nPossible values:\nUNKNOWN\nWEB_UI\nAPI\nTWILIO\nGOOGLE_TELEPHONY_PLATFORM\nCONTACT_CENTER_AS_A_SERVICE\n"
                },
                "disableBargeInControl": {
                    "type": "boolean",
                    "description": "(Output)\nWhether to disable user barge-in in the conversation.\n- true: User interruptions are disabled while the agent is speaking.\n- false: The agent retains automatic control over when the user can interrupt.\n"
                },
                "disableDtmf": {
                    "type": "boolean",
                    "description": "(Output)\nWhether to disable DTMF (dual-tone multi-frequency).\n"
                },
                "personaProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppDefaultChannelProfilePersonaProperty:AppVersionSnapshotAppDefaultChannelProfilePersonaProperty"
                    },
                    "description": "(Output)\nRepresents the persona property of a channel.\nStructure is documented below.\n"
                },
                "profileId": {
                    "type": "string",
                    "description": "(Output)\nThe unique identifier of the channel profile.\n"
                },
                "webWidgetConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppDefaultChannelProfileWebWidgetConfig:AppVersionSnapshotAppDefaultChannelProfileWebWidgetConfig"
                    },
                    "description": "(Output)\nMessage for configuration for the web widget.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "channelType",
                        "disableBargeInControl",
                        "disableDtmf",
                        "personaProperties",
                        "profileId",
                        "webWidgetConfigs"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppDefaultChannelProfilePersonaProperty:AppVersionSnapshotAppDefaultChannelProfilePersonaProperty": {
            "properties": {
                "persona": {
                    "type": "string",
                    "description": "(Output)\nThe persona of the channel.\nPossible values:\nUNKNOWN\nCONCISE\nCHATTY\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "persona"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppDefaultChannelProfileWebWidgetConfig:AppVersionSnapshotAppDefaultChannelProfileWebWidgetConfig": {
            "properties": {
                "modality": {
                    "type": "string",
                    "description": "(Output)\nThe modality of the web widget.\nPossible values:\nUNKNOWN_MODALITY\nCHAT_AND_VOICE\nVOICE_ONLY\nCHAT_ONLY\n"
                },
                "theme": {
                    "type": "string",
                    "description": "(Output)\nThe theme of the web widget.\nPossible values:\nUNKNOWN_THEME\nLIGHT\nDARK\n"
                },
                "webWidgetTitle": {
                    "type": "string",
                    "description": "(Output)\nThe title of the web widget.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "modality",
                        "theme",
                        "webWidgetTitle"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppEvaluationMetricsThreshold:AppVersionSnapshotAppEvaluationMetricsThreshold": {
            "properties": {
                "goldenEvaluationMetricsThresholds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThreshold:AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThreshold"
                    },
                    "description": "(Output)\nSettings for golden evaluations.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "goldenEvaluationMetricsThresholds"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThreshold:AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThreshold": {
            "properties": {
                "expectationLevelMetricsThresholds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThresholdExpectationLevelMetricsThreshold:AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThresholdExpectationLevelMetricsThreshold"
                    },
                    "description": "(Output)\nExpectation level metrics thresholds.\nStructure is documented below.\n"
                },
                "turnLevelMetricsThresholds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThresholdTurnLevelMetricsThreshold:AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThresholdTurnLevelMetricsThreshold"
                    },
                    "description": "(Output)\nTurn level metrics thresholds.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "expectationLevelMetricsThresholds",
                        "turnLevelMetricsThresholds"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThresholdExpectationLevelMetricsThreshold:AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThresholdExpectationLevelMetricsThreshold": {
            "properties": {
                "toolInvocationParameterCorrectnessThreshold": {
                    "type": "number",
                    "description": "(Output)\nThe success threshold for individual tool invocation parameter\ncorrectness. Must be a float between 0 and 1. Default is 1.0.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "toolInvocationParameterCorrectnessThreshold"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThresholdTurnLevelMetricsThreshold:AppVersionSnapshotAppEvaluationMetricsThresholdGoldenEvaluationMetricsThresholdTurnLevelMetricsThreshold": {
            "properties": {
                "overallToolInvocationCorrectnessThreshold": {
                    "type": "number",
                    "description": "(Output)\nThe success threshold for overall tool invocation correctness. Must be\na float between 0 and 1. Default is 1.0.\n"
                },
                "semanticSimilaritySuccessThreshold": {
                    "type": "integer",
                    "description": "(Output)\nThe success threshold for semantic similarity. Must be an integer\nbetween 0 and 4. Default is \u003e= 3.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "overallToolInvocationCorrectnessThreshold",
                        "semanticSimilaritySuccessThreshold"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppLanguageSetting:AppVersionSnapshotAppLanguageSetting": {
            "properties": {
                "defaultLanguageCode": {
                    "type": "string",
                    "description": "(Output)\nThe default language code of the app.\n"
                },
                "enableMultilingualSupport": {
                    "type": "boolean",
                    "description": "(Output)\nEnables multilingual support. If true, agents in the app will use pre-built\ninstructions to improve handling of multilingual input.\n"
                },
                "fallbackAction": {
                    "type": "string",
                    "description": "(Output)\nThe action to perform when an agent receives input in an unsupported\nlanguage.\nThis can be a predefined action or a custom tool call.\nValid values are:\n- A tool's full resource name, which triggers a specific tool execution.\n- A predefined system action, such as \"escalate\" or \"exit\", which triggers\nan EndSession signal with corresponding metadata\nto terminate the conversation.\n"
                },
                "supportedLanguageCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of languages codes supported by the app, in addition to the\n\u003cspan pulumi-lang-nodejs=\"`defaultLanguageCode`\" pulumi-lang-dotnet=\"`DefaultLanguageCode`\" pulumi-lang-go=\"`defaultLanguageCode`\" pulumi-lang-python=\"`default_language_code`\" pulumi-lang-yaml=\"`defaultLanguageCode`\" pulumi-lang-java=\"`defaultLanguageCode`\" pulumi-lang-hcl=\"`default_language_code`\"\u003e`defaultLanguageCode`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "defaultLanguageCode",
                        "enableMultilingualSupport",
                        "fallbackAction",
                        "supportedLanguageCodes"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppLoggingSetting:AppVersionSnapshotAppLoggingSetting": {
            "properties": {
                "audioRecordingConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppLoggingSettingAudioRecordingConfig:AppVersionSnapshotAppLoggingSettingAudioRecordingConfig"
                    },
                    "description": "(Output)\nConfiguration for how the audio interactions should be recorded.\nStructure is documented below.\n"
                },
                "bigqueryExportSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppLoggingSettingBigqueryExportSetting:AppVersionSnapshotAppLoggingSettingBigqueryExportSetting"
                    },
                    "description": "(Output)\nSettings to describe the BigQuery export behaviors for the app.\nStructure is documented below.\n"
                },
                "cloudLoggingSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppLoggingSettingCloudLoggingSetting:AppVersionSnapshotAppLoggingSettingCloudLoggingSetting"
                    },
                    "description": "(Output)\nSettings to describe the Cloud Logging behaviors for the app.\nStructure is documented below.\n"
                },
                "conversationLoggingSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppLoggingSettingConversationLoggingSetting:AppVersionSnapshotAppLoggingSettingConversationLoggingSetting"
                    },
                    "description": "(Output)\nSettings to describe the conversation logging behaviors for the app.\nStructure is documented below.\n"
                },
                "redactionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppLoggingSettingRedactionConfig:AppVersionSnapshotAppLoggingSettingRedactionConfig"
                    },
                    "description": "(Output)\nConfiguration to instruct how sensitive data should be handled.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "audioRecordingConfigs",
                        "bigqueryExportSettings",
                        "cloudLoggingSettings",
                        "conversationLoggingSettings",
                        "redactionConfigs"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppLoggingSettingAudioRecordingConfig:AppVersionSnapshotAppLoggingSettingAudioRecordingConfig": {
            "properties": {
                "gcsBucket": {
                    "type": "string",
                    "description": "(Output)\nThe [Cloud Storage](https://cloud.google.com/storage) bucket to store the\nsession audio recordings. The URI must start with \"gs://\".\nNote: If the Cloud Storage bucket is in a different project from the app,\nyou should grant `storage.objects.create` permission to the CES service\nagent `service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "gcsPathPrefix": {
                    "type": "string",
                    "description": "(Output)\nThe Cloud Storage path prefix for audio recordings.\nThis prefix can include the following placeholders, which will be\ndynamically substituted at serving time:\n- $project:   project ID\n- $location:  app location\n- $app:       app ID\n- $date:      session date in YYYY-MM-DD format\n- $session:   session ID\nIf the path prefix is not specified, the default prefix\n`$project/$location/$app/$date/$session/` will be used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "gcsBucket",
                        "gcsPathPrefix"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppLoggingSettingBigqueryExportSetting:AppVersionSnapshotAppLoggingSettingBigqueryExportSetting": {
            "properties": {
                "dataset": {
                    "type": "string",
                    "description": "(Output)\nThe BigQuery dataset to export the data to.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether the guardrail is enabled.\n"
                },
                "project": {
                    "type": "string",
                    "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dataset",
                        "enabled",
                        "project"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppLoggingSettingCloudLoggingSetting:AppVersionSnapshotAppLoggingSettingCloudLoggingSetting": {
            "properties": {
                "enableCloudLogging": {
                    "type": "boolean",
                    "description": "(Output)\nWhether to enable Cloud Logging for the sessions.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableCloudLogging"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppLoggingSettingConversationLoggingSetting:AppVersionSnapshotAppLoggingSettingConversationLoggingSetting": {
            "properties": {
                "disableConversationLogging": {
                    "type": "boolean",
                    "description": "(Output)\nWhether to disable conversation logging for the sessions.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "disableConversationLogging"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppLoggingSettingRedactionConfig:AppVersionSnapshotAppLoggingSettingRedactionConfig": {
            "properties": {
                "deidentifyTemplate": {
                    "type": "string",
                    "description": "(Output)\n[DLP](https://cloud.google.com/dlp/docs) deidentify template name to\ninstruct on how to de-identify content.\nFormat:\n`projects/{project}/locations/{location}/deidentifyTemplates/{deidentify_template}`\n"
                },
                "enableRedaction": {
                    "type": "boolean",
                    "description": "(Output)\nIf true, redaction will be applied in various logging scenarios, including\nconversation history, Cloud Logging and audio recording.\n"
                },
                "inspectTemplate": {
                    "type": "string",
                    "description": "(Output)\n[DLP](https://cloud.google.com/dlp/docs) inspect template name to configure\ndetection of sensitive data types.\nFormat:\n`projects/{project}/locations/{location}/inspectTemplates/{inspect_template}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deidentifyTemplate",
                        "enableRedaction",
                        "inspectTemplate"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppModelSetting:AppVersionSnapshotAppModelSetting": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "(Output)\nThe LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "(Output)\nIf set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "model",
                        "temperature"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppTimeZoneSetting:AppVersionSnapshotAppTimeZoneSetting": {
            "properties": {
                "timeZone": {
                    "type": "string",
                    "description": "(Output)\nThe time zone of the app from the time zone database, e.g., America/Los_Angeles, Europe/Paris.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "timeZone"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppVariableDeclaration:AppVersionSnapshotAppVariableDeclaration": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "schemas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotAppVariableDeclarationSchema:AppVersionSnapshotAppVariableDeclarationSchema"
                    },
                    "description": "(Output)\nRepresents a select subset of an OpenAPI 3.0 schema object.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "name",
                        "schemas"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotAppVariableDeclarationSchema:AppVersionSnapshotAppVariableDeclarationSchema": {
            "properties": {
                "additionalProperties": {
                    "type": "string",
                    "description": "(Output)\nOptional. Defines the schema for additional properties allowed in an object.\nThe value must be a valid JSON string representing the Schema object.\n(Note: OpenAPI also allows a boolean, this definition expects a Schema JSON).\n"
                },
                "anyOf": {
                    "type": "string",
                    "description": "(Output)\nOptional. The instance value should be valid against at least one of the schemas in this list.\n"
                },
                "default": {
                    "type": "string",
                    "description": "(Output)\nOptional. Default value of the data. Represents a dynamically typed value\nwhich can be either null, a number, a string, a boolean, a struct,\nor a list of values. The provided default value must be compatible\nwith the defined 'type' and other schema constraints.\n"
                },
                "defs": {
                    "type": "string",
                    "description": "(Output)\nA map of definitions for use by ref. Only allowed at the root of the schema.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "enums": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nPossible values of the element of primitive type with enum format.\nExamples:\n1. We can define direction as :\n{type:STRING, format:enum, enum:[\"EAST\", NORTH\", \"SOUTH\", \"WEST\"]}\n2. We can define apartment number as :\n{type:INTEGER, format:enum, enum:[\"101\", \"201\", \"301\"]}\n"
                },
                "items": {
                    "type": "string",
                    "description": "(Output)\nSchema of the elements of Type.ARRAY.\n"
                },
                "nullable": {
                    "type": "boolean",
                    "description": "(Output)\nIndicates if the value may be null.\n"
                },
                "prefixItems": {
                    "type": "string",
                    "description": "(Output)\nOptional. Schemas of initial elements of Type.ARRAY.\n"
                },
                "properties": {
                    "type": "string",
                    "description": "(Output)\nProperties of Type.OBJECT.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "(Output)\nAllows indirect references between schema nodes. The value should be a\nvalid reference to a child of the root \u003cspan pulumi-lang-nodejs=\"`defs`\" pulumi-lang-dotnet=\"`Defs`\" pulumi-lang-go=\"`defs`\" pulumi-lang-python=\"`defs`\" pulumi-lang-yaml=\"`defs`\" pulumi-lang-java=\"`defs`\" pulumi-lang-hcl=\"`defs`\"\u003e`defs`\u003c/span\u003e.\nFor example, the following schema defines a reference to a schema node\nnamed \"Pet\":\ntype: object\nproperties:\npet:\nref: #/defs/Pet\ndefs:\nPet:\ntype: object\nproperties:\nname:\ntype: string\nThe value of the \"pet\" property is a reference to the schema node\nnamed \"Pet\".\nSee details in\nhttps://json-schema.org/understanding-json-schema/structuring.\n"
                },
                "requireds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nRequired properties of Type.OBJECT.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe type of the data store. This field is readonly and populated by the\nserver.\nPossible values:\nPUBLIC_WEB\nUNSTRUCTURED\nFAQ\nCONNECTOR\n"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "description": "(Output)\nIndicate the items in the array must be unique. Only applies to TYPE.ARRAY.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "additionalProperties",
                        "anyOf",
                        "default",
                        "defs",
                        "description",
                        "enums",
                        "items",
                        "nullable",
                        "prefixItems",
                        "properties",
                        "ref",
                        "requireds",
                        "type",
                        "uniqueItems"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExample:AppVersionSnapshotExample": {
            "properties": {
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "entryAgent": {
                    "type": "string",
                    "description": "(Output)\nThe agent that initially handles the conversation. If not specified, the\nexample represents a conversation that is handled by the root agent.\nFormat: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`\n"
                },
                "etag": {
                    "type": "string",
                    "description": "(Output)\nETag used to ensure the object hasn't changed during a read-modify-write\noperation. If the etag is empty, the update will overwrite any concurrent\nchanges.\n"
                },
                "invalid": {
                    "type": "boolean",
                    "description": "(Output)\nThe example may become invalid if referencing resources are deleted.\nInvalid examples will not be used as few-shot examples.\n"
                },
                "messages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExampleMessage:AppVersionSnapshotExampleMessage"
                    },
                    "description": "(Output)\nThe collection of messages that make up the conversation.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was last updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createTime",
                        "description",
                        "displayName",
                        "entryAgent",
                        "etag",
                        "invalid",
                        "messages",
                        "name",
                        "updateTime"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExampleMessage:AppVersionSnapshotExampleMessage": {
            "properties": {
                "chunks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExampleMessageChunk:AppVersionSnapshotExampleMessageChunk"
                    },
                    "description": "(Output)\nContent of the message as a series of chunks.\nStructure is documented below.\n"
                },
                "role": {
                    "type": "string",
                    "description": "(Output)\nThe role within the conversation, e.g., user, agent.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "chunks",
                        "role"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExampleMessageChunk:AppVersionSnapshotExampleMessageChunk": {
            "properties": {
                "agentTransfers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExampleMessageChunkAgentTransfer:AppVersionSnapshotExampleMessageChunkAgentTransfer"
                    },
                    "description": "(Output)\nRepresents an event indicating the transfer of a conversation to a different\nagent.\nStructure is documented below.\n"
                },
                "images": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExampleMessageChunkImage:AppVersionSnapshotExampleMessageChunkImage"
                    },
                    "description": "(Output)\nRepresents an image input or output in the conversation.\nStructure is documented below.\n"
                },
                "text": {
                    "type": "string",
                    "description": "(Output)\nText for the agent to respond with.\n"
                },
                "toolCalls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExampleMessageChunkToolCall:AppVersionSnapshotExampleMessageChunkToolCall"
                    },
                    "description": "(Output)\nRequest for the client or the agent to execute the specified tool.\nStructure is documented below.\n"
                },
                "toolResponses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExampleMessageChunkToolResponse:AppVersionSnapshotExampleMessageChunkToolResponse"
                    },
                    "description": "(Output)\nThe execution result of a specific tool from the client or the agent.\nStructure is documented below.\n"
                },
                "updatedVariables": {
                    "type": "string",
                    "description": "(Output)\nA struct represents variables that were updated in the conversation,\nkeyed by variable names.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agentTransfers",
                        "images",
                        "text",
                        "toolCalls",
                        "toolResponses",
                        "updatedVariables"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExampleMessageChunkAgentTransfer:AppVersionSnapshotExampleMessageChunkAgentTransfer": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "targetAgent": {
                    "type": "string",
                    "description": "(Output)\nThe agent to which the conversation is being transferred. The agent will\nhandle the conversation from this point forward.\nFormat: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "targetAgent"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExampleMessageChunkImage:AppVersionSnapshotExampleMessageChunkImage": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "(Output)\nRaw bytes of the image.\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "(Output)\nThe IANA standard MIME type of the source data.\nSupported image types includes:\n* image/png\n* image/jpeg\n* image/webp\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "data",
                        "mimeType"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExampleMessageChunkToolCall:AppVersionSnapshotExampleMessageChunkToolCall": {
            "properties": {
                "args": {
                    "type": "string",
                    "description": "(Output)\nThe input parameters and values for the tool in JSON object format.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Output)\nThe matching ID of the tool call the response is for.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "(Output)\nThe name of the tool to execute.\nFormat: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`\n"
                },
                "toolsetTools": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExampleMessageChunkToolCallToolsetTool:AppVersionSnapshotExampleMessageChunkToolCallToolsetTool"
                    },
                    "description": "(Output)\nA tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "args",
                        "displayName",
                        "id",
                        "tool",
                        "toolsetTools"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExampleMessageChunkToolCallToolsetTool:AppVersionSnapshotExampleMessageChunkToolCallToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "(Output)\nThe tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "(Output)\nThe resource name of the Toolset from which this tool is derived.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "toolId",
                        "toolset"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExampleMessageChunkToolResponse:AppVersionSnapshotExampleMessageChunkToolResponse": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Output)\nThe matching ID of the tool call the response is for.\n"
                },
                "response": {
                    "type": "string",
                    "description": "(Output)\nRepresents a select subset of an OpenAPI 3.0 schema object.\nStructure is documented below.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "(Output)\nThe name of the tool to execute.\nFormat: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`\n"
                },
                "toolsetTools": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotExampleMessageChunkToolResponseToolsetTool:AppVersionSnapshotExampleMessageChunkToolResponseToolsetTool"
                    },
                    "description": "(Output)\nA tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "id",
                        "response",
                        "tool",
                        "toolsetTools"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotExampleMessageChunkToolResponseToolsetTool:AppVersionSnapshotExampleMessageChunkToolResponseToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "(Output)\nThe tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "(Output)\nThe resource name of the Toolset from which this tool is derived.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "toolId",
                        "toolset"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrail:AppVersionSnapshotGuardrail": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailAction:AppVersionSnapshotGuardrailAction"
                    },
                    "description": "(Output)\nAction that is taken when a certain precondition is met.\nStructure is documented below.\n"
                },
                "codeCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailCodeCallback:AppVersionSnapshotGuardrailCodeCallback"
                    },
                    "description": "(Output)\nGuardrail that blocks the conversation based on the code callbacks\nprovided.\nStructure is documented below.\n"
                },
                "contentFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailContentFilter:AppVersionSnapshotGuardrailContentFilter"
                    },
                    "description": "(Output)\nGuardrail that bans certain content from being used in the conversation.\nStructure is documented below.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether the guardrail is enabled.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "(Output)\nETag used to ensure the object hasn't changed during a read-modify-write\noperation. If the etag is empty, the update will overwrite any concurrent\nchanges.\n"
                },
                "llmPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailLlmPolicy:AppVersionSnapshotGuardrailLlmPolicy"
                    },
                    "description": "(Output)\nGuardrail that blocks the conversation if the LLM response is considered\nviolating the policy based on the LLM classification.\nStructure is documented below.\n"
                },
                "llmPromptSecurities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailLlmPromptSecurity:AppVersionSnapshotGuardrailLlmPromptSecurity"
                    },
                    "description": "(Output)\nGuardrail that blocks the conversation if the input is considered unsafe\nbased on the LLM classification.\nStructure is documented below.\n"
                },
                "modelSafeties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailModelSafety:AppVersionSnapshotGuardrailModelSafety"
                    },
                    "description": "(Output)\nModel safety settings overrides. When this is set, it will override the\ndefault settings and trigger the guardrail if the response is considered\nunsafe.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was last updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "actions",
                        "codeCallbacks",
                        "contentFilters",
                        "createTime",
                        "description",
                        "displayName",
                        "enabled",
                        "etag",
                        "llmPolicies",
                        "llmPromptSecurities",
                        "modelSafeties",
                        "name",
                        "updateTime"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailAction:AppVersionSnapshotGuardrailAction": {
            "properties": {
                "generativeAnswers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailActionGenerativeAnswer:AppVersionSnapshotGuardrailActionGenerativeAnswer"
                    },
                    "description": "(Output)\nThe agent will immediately respond with a generative answer.\nStructure is documented below.\n"
                },
                "respondImmediatelies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailActionRespondImmediately:AppVersionSnapshotGuardrailActionRespondImmediately"
                    },
                    "description": "(Output)\nThe agent will immediately respond with a preconfigured response.\nStructure is documented below.\n"
                },
                "transferAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailActionTransferAgent:AppVersionSnapshotGuardrailActionTransferAgent"
                    },
                    "description": "(Output)\nThe agent will transfer the conversation to a different agent.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "generativeAnswers",
                        "respondImmediatelies",
                        "transferAgents"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailActionGenerativeAnswer:AppVersionSnapshotGuardrailActionGenerativeAnswer": {
            "properties": {
                "prompt": {
                    "type": "string",
                    "description": "(Output)\nThe prompt definition. If not set, default prompt will be used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "prompt"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailActionRespondImmediately:AppVersionSnapshotGuardrailActionRespondImmediately": {
            "properties": {
                "responses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailActionRespondImmediatelyResponse:AppVersionSnapshotGuardrailActionRespondImmediatelyResponse"
                    },
                    "description": "(Output)\nThe canned responses for the agent to choose from. The response is chosen\nrandomly.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "responses"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailActionRespondImmediatelyResponse:AppVersionSnapshotGuardrailActionRespondImmediatelyResponse": {
            "properties": {
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "text": {
                    "type": "string",
                    "description": "(Output)\nText for the agent to respond with.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "disabled",
                        "text"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailActionTransferAgent:AppVersionSnapshotGuardrailActionTransferAgent": {
            "properties": {
                "agent": {
                    "type": "string",
                    "description": "(Output)\nThe name of the agent to transfer the conversation to. The agent must be\nin the same app as the current agent.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/agents/{agent}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agent"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailCodeCallback:AppVersionSnapshotGuardrailCodeCallback": {
            "properties": {
                "afterAgentCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailCodeCallbackAfterAgentCallback:AppVersionSnapshotGuardrailCodeCallbackAfterAgentCallback"
                    },
                    "description": "(Output)\nA callback defines the custom logic to be executed at various stages of\nagent interaction.\nStructure is documented below.\n"
                },
                "afterModelCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailCodeCallbackAfterModelCallback:AppVersionSnapshotGuardrailCodeCallbackAfterModelCallback"
                    },
                    "description": "(Output)\nA callback defines the custom logic to be executed at various stages of\nagent interaction.\nStructure is documented below.\n"
                },
                "beforeAgentCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailCodeCallbackBeforeAgentCallback:AppVersionSnapshotGuardrailCodeCallbackBeforeAgentCallback"
                    },
                    "description": "(Output)\nA callback defines the custom logic to be executed at various stages of\nagent interaction.\nStructure is documented below.\n"
                },
                "beforeModelCallbacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailCodeCallbackBeforeModelCallback:AppVersionSnapshotGuardrailCodeCallbackBeforeModelCallback"
                    },
                    "description": "(Output)\nA callback defines the custom logic to be executed at various stages of\nagent interaction.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "afterAgentCallbacks",
                        "afterModelCallbacks",
                        "beforeAgentCallbacks",
                        "beforeModelCallbacks"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailCodeCallbackAfterAgentCallback:AppVersionSnapshotGuardrailCodeCallbackAfterAgentCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailCodeCallbackAfterModelCallback:AppVersionSnapshotGuardrailCodeCallbackAfterModelCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailCodeCallbackBeforeAgentCallback:AppVersionSnapshotGuardrailCodeCallbackBeforeAgentCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailCodeCallbackBeforeModelCallback:AppVersionSnapshotGuardrailCodeCallbackBeforeModelCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "disabled",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailContentFilter:AppVersionSnapshotGuardrailContentFilter": {
            "properties": {
                "bannedContents": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of banned phrases. Applies to both user inputs and agent responses.\n"
                },
                "bannedContentsInAgentResponses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of banned phrases. Applies only to agent responses.\n"
                },
                "bannedContentsInUserInputs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of banned phrases. Applies only to user inputs.\n"
                },
                "disregardDiacritics": {
                    "type": "boolean",
                    "description": "(Output)\nIf true, diacritics are ignored during matching.\n"
                },
                "matchType": {
                    "type": "string",
                    "description": "(Output)\nMatch type for the content filter.\nPossible values:\nSIMPLE_STRING_MATCH\nWORD_BOUNDARY_STRING_MATCH\nREGEXP_MATCH\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "bannedContents",
                        "bannedContentsInAgentResponses",
                        "bannedContentsInUserInputs",
                        "disregardDiacritics",
                        "matchType"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailLlmPolicy:AppVersionSnapshotGuardrailLlmPolicy": {
            "properties": {
                "failOpen": {
                    "type": "boolean",
                    "description": "(Output)\nIf an error occurs during the policy check, fail open and do not trigger\nthe guardrail.\n"
                },
                "maxConversationMessages": {
                    "type": "integer",
                    "description": "(Output)\nWhen checking this policy, consider the last 'n' messages in the\nconversation.\nWhen not set a default value of 10 will be used.\n"
                },
                "modelSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailLlmPolicyModelSetting:AppVersionSnapshotGuardrailLlmPolicyModelSetting"
                    },
                    "description": "(Output)\nModel settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "policyScope": {
                    "type": "string",
                    "description": "(Output)\nDefines when to apply the policy check during the conversation. If set to\n`POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input.\nWhen applying the policy to the agent response, additional latency will\nbe introduced before the agent can respond.\nPossible values:\nUSER_QUERY\nAGENT_RESPONSE\nUSER_QUERY_AND_AGENT_RESPONSE\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "(Output)\nThe prompt definition. If not set, default prompt will be used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "failOpen",
                        "maxConversationMessages",
                        "modelSettings",
                        "policyScope",
                        "prompt"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailLlmPolicyModelSetting:AppVersionSnapshotGuardrailLlmPolicyModelSetting": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "(Output)\nThe LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "(Output)\nIf set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "model",
                        "temperature"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailLlmPromptSecurity:AppVersionSnapshotGuardrailLlmPromptSecurity": {
            "properties": {
                "customPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailLlmPromptSecurityCustomPolicy:AppVersionSnapshotGuardrailLlmPromptSecurityCustomPolicy"
                    },
                    "description": "(Output)\nGuardrail that blocks the conversation if the LLM response is considered\nviolating the policy based on the LLM classification.\nStructure is documented below.\n"
                },
                "defaultSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailLlmPromptSecurityDefaultSetting:AppVersionSnapshotGuardrailLlmPromptSecurityDefaultSetting"
                    },
                    "description": "(Output)\nConfiguration for default system security settings.\nStructure is documented below.\n"
                },
                "failOpen": {
                    "type": "boolean",
                    "description": "(Output)\nIf an error occurs during the policy check, fail open and do not trigger\nthe guardrail.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "customPolicies",
                        "defaultSettings",
                        "failOpen"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailLlmPromptSecurityCustomPolicy:AppVersionSnapshotGuardrailLlmPromptSecurityCustomPolicy": {
            "properties": {
                "failOpen": {
                    "type": "boolean",
                    "description": "(Output)\nIf an error occurs during the policy check, fail open and do not trigger\nthe guardrail.\n"
                },
                "maxConversationMessages": {
                    "type": "integer",
                    "description": "(Output)\nWhen checking this policy, consider the last 'n' messages in the\nconversation.\nWhen not set a default value of 10 will be used.\n"
                },
                "modelSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailLlmPromptSecurityCustomPolicyModelSetting:AppVersionSnapshotGuardrailLlmPromptSecurityCustomPolicyModelSetting"
                    },
                    "description": "(Output)\nModel settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "policyScope": {
                    "type": "string",
                    "description": "(Output)\nDefines when to apply the policy check during the conversation. If set to\n`POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input.\nWhen applying the policy to the agent response, additional latency will\nbe introduced before the agent can respond.\nPossible values:\nUSER_QUERY\nAGENT_RESPONSE\nUSER_QUERY_AND_AGENT_RESPONSE\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "(Output)\nThe prompt definition. If not set, default prompt will be used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "failOpen",
                        "maxConversationMessages",
                        "modelSettings",
                        "policyScope",
                        "prompt"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailLlmPromptSecurityCustomPolicyModelSetting:AppVersionSnapshotGuardrailLlmPromptSecurityCustomPolicyModelSetting": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "(Output)\nThe LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "(Output)\nIf set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "model",
                        "temperature"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailLlmPromptSecurityDefaultSetting:AppVersionSnapshotGuardrailLlmPromptSecurityDefaultSetting": {
            "properties": {
                "defaultPromptTemplate": {
                    "type": "string",
                    "description": "(Output)\nThe default prompt template used by the system.\nThis field is for display purposes to show the user what prompt\nthe system uses by default. It is OUTPUT_ONLY.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "defaultPromptTemplate"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailModelSafety:AppVersionSnapshotGuardrailModelSafety": {
            "properties": {
                "safetySettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotGuardrailModelSafetySafetySetting:AppVersionSnapshotGuardrailModelSafetySafetySetting"
                    },
                    "description": "(Output)\nList of safety settings.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "safetySettings"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotGuardrailModelSafetySafetySetting:AppVersionSnapshotGuardrailModelSafetySafetySetting": {
            "properties": {
                "category": {
                    "type": "string",
                    "description": "(Output)\nThe harm category.\nPossible values:\nHARM_CATEGORY_HATE_SPEECH\nHARM_CATEGORY_DANGEROUS_CONTENT\nHARM_CATEGORY_HARASSMENT\nHARM_CATEGORY_SEXUALLY_EXPLICIT\n"
                },
                "threshold": {
                    "type": "string",
                    "description": "(Output)\nThe harm block threshold.\nPossible values:\nBLOCK_LOW_AND_ABOVE\nBLOCK_MEDIUM_AND_ABOVE\nBLOCK_ONLY_HIGH\nBLOCK_NONE\nOFF\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "category",
                        "threshold"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotTool:AppVersionSnapshotTool": {
            "properties": {
                "clientFunctions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolClientFunction:AppVersionSnapshotToolClientFunction"
                    },
                    "description": "(Output)\nRepresents a client-side function that the agent can invoke. When the\ntool is chosen by the agent, control is handed off to the client.\nThe client is responsible for executing the function and returning the result\nas a ToolResponse to continue the interaction with the agent.\nStructure is documented below.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was created.\n"
                },
                "dataStoreTools": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreTool:AppVersionSnapshotToolDataStoreTool"
                    },
                    "description": "(Output)\nTool to retrieve from Vertex AI Search datastore or engine for grounding.\nAccepts either a datastore or an engine, but not both.\nSee Vertex AI Search:\nhttps://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction.\nStructure is documented below.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "(Output)\nETag used to ensure the object hasn't changed during a read-modify-write\noperation. If the etag is empty, the update will overwrite any concurrent\nchanges.\n"
                },
                "executionType": {
                    "type": "string",
                    "description": "(Output)\nPossible values:\nSYNCHRONOUS\nASYNCHRONOUS\n"
                },
                "generatedSummary": {
                    "type": "string",
                    "description": "(Output)\nIf the tool is generated by the LLM assistant, this field contains a\ndescriptive summary of the generation.\n"
                },
                "googleSearchTools": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolGoogleSearchTool:AppVersionSnapshotToolGoogleSearchTool"
                    },
                    "description": "(Output)\nRepresents a tool to perform Google web searches for grounding.\nSee\nhttps://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-google-search.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "openApiTools": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiTool:AppVersionSnapshotToolOpenApiTool"
                    },
                    "description": "(Output)\nA remote API tool defined by an OpenAPI schema.\nStructure is documented below.\n"
                },
                "pythonFunctions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolPythonFunction:AppVersionSnapshotToolPythonFunction"
                    },
                    "description": "(Output)\nA Python function tool.\nStructure is documented below.\n"
                },
                "systemTools": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolSystemTool:AppVersionSnapshotToolSystemTool"
                    },
                    "description": "(Output)\nThe system tool.\nStructure is documented below.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was last updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clientFunctions",
                        "createTime",
                        "dataStoreTools",
                        "displayName",
                        "etag",
                        "executionType",
                        "generatedSummary",
                        "googleSearchTools",
                        "name",
                        "openApiTools",
                        "pythonFunctions",
                        "systemTools",
                        "updateTime"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolClientFunction:AppVersionSnapshotToolClientFunction": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "parameters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolClientFunctionParameter:AppVersionSnapshotToolClientFunctionParameter"
                    },
                    "description": "(Output)\nRepresents a select subset of an OpenAPI 3.0 schema object.\nStructure is documented below.\n"
                },
                "responses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolClientFunctionResponse:AppVersionSnapshotToolClientFunctionResponse"
                    },
                    "description": "(Output)\nRepresents a select subset of an OpenAPI 3.0 schema object.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "name",
                        "parameters",
                        "responses"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolClientFunctionParameter:AppVersionSnapshotToolClientFunctionParameter": {
            "properties": {
                "additionalProperties": {
                    "type": "string",
                    "description": "(Output)\nOptional. Defines the schema for additional properties allowed in an object.\nThe value must be a valid JSON string representing the Schema object.\n(Note: OpenAPI also allows a boolean, this definition expects a Schema JSON).\n"
                },
                "anyOf": {
                    "type": "string",
                    "description": "(Output)\nOptional. The instance value should be valid against at least one of the schemas in this list.\n"
                },
                "default": {
                    "type": "string",
                    "description": "(Output)\nOptional. Default value of the data. Represents a dynamically typed value\nwhich can be either null, a number, a string, a boolean, a struct,\nor a list of values. The provided default value must be compatible\nwith the defined 'type' and other schema constraints.\n"
                },
                "defs": {
                    "type": "string",
                    "description": "(Output)\nA map of definitions for use by ref. Only allowed at the root of the schema.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "enums": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nPossible values of the element of primitive type with enum format.\nExamples:\n1. We can define direction as :\n{type:STRING, format:enum, enum:[\"EAST\", NORTH\", \"SOUTH\", \"WEST\"]}\n2. We can define apartment number as :\n{type:INTEGER, format:enum, enum:[\"101\", \"201\", \"301\"]}\n"
                },
                "items": {
                    "type": "string",
                    "description": "(Output)\nSchema of the elements of Type.ARRAY.\n"
                },
                "nullable": {
                    "type": "boolean",
                    "description": "(Output)\nIndicates if the value may be null.\n"
                },
                "prefixItems": {
                    "type": "string",
                    "description": "(Output)\nOptional. Schemas of initial elements of Type.ARRAY.\n"
                },
                "properties": {
                    "type": "string",
                    "description": "(Output)\nProperties of Type.OBJECT.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "(Output)\nAllows indirect references between schema nodes. The value should be a\nvalid reference to a child of the root \u003cspan pulumi-lang-nodejs=\"`defs`\" pulumi-lang-dotnet=\"`Defs`\" pulumi-lang-go=\"`defs`\" pulumi-lang-python=\"`defs`\" pulumi-lang-yaml=\"`defs`\" pulumi-lang-java=\"`defs`\" pulumi-lang-hcl=\"`defs`\"\u003e`defs`\u003c/span\u003e.\nFor example, the following schema defines a reference to a schema node\nnamed \"Pet\":\ntype: object\nproperties:\npet:\nref: #/defs/Pet\ndefs:\nPet:\ntype: object\nproperties:\nname:\ntype: string\nThe value of the \"pet\" property is a reference to the schema node\nnamed \"Pet\".\nSee details in\nhttps://json-schema.org/understanding-json-schema/structuring.\n"
                },
                "requireds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nRequired properties of Type.OBJECT.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe type of the data store. This field is readonly and populated by the\nserver.\nPossible values:\nPUBLIC_WEB\nUNSTRUCTURED\nFAQ\nCONNECTOR\n"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "description": "(Output)\nIndicate the items in the array must be unique. Only applies to TYPE.ARRAY.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "additionalProperties",
                        "anyOf",
                        "default",
                        "defs",
                        "description",
                        "enums",
                        "items",
                        "nullable",
                        "prefixItems",
                        "properties",
                        "ref",
                        "requireds",
                        "type",
                        "uniqueItems"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolClientFunctionResponse:AppVersionSnapshotToolClientFunctionResponse": {
            "properties": {
                "additionalProperties": {
                    "type": "string",
                    "description": "(Output)\nOptional. Defines the schema for additional properties allowed in an object.\nThe value must be a valid JSON string representing the Schema object.\n(Note: OpenAPI also allows a boolean, this definition expects a Schema JSON).\n"
                },
                "anyOf": {
                    "type": "string",
                    "description": "(Output)\nOptional. The instance value should be valid against at least one of the schemas in this list.\n"
                },
                "default": {
                    "type": "string",
                    "description": "(Output)\nOptional. Default value of the data. Represents a dynamically typed value\nwhich can be either null, a number, a string, a boolean, a struct,\nor a list of values. The provided default value must be compatible\nwith the defined 'type' and other schema constraints.\n"
                },
                "defs": {
                    "type": "string",
                    "description": "(Output)\nA map of definitions for use by ref. Only allowed at the root of the schema.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "enums": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nPossible values of the element of primitive type with enum format.\nExamples:\n1. We can define direction as :\n{type:STRING, format:enum, enum:[\"EAST\", NORTH\", \"SOUTH\", \"WEST\"]}\n2. We can define apartment number as :\n{type:INTEGER, format:enum, enum:[\"101\", \"201\", \"301\"]}\n"
                },
                "items": {
                    "type": "string",
                    "description": "(Output)\nSchema of the elements of Type.ARRAY.\n"
                },
                "nullable": {
                    "type": "boolean",
                    "description": "(Output)\nIndicates if the value may be null.\n"
                },
                "prefixItems": {
                    "type": "string",
                    "description": "(Output)\nOptional. Schemas of initial elements of Type.ARRAY.\n"
                },
                "properties": {
                    "type": "string",
                    "description": "(Output)\nProperties of Type.OBJECT.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "(Output)\nAllows indirect references between schema nodes. The value should be a\nvalid reference to a child of the root \u003cspan pulumi-lang-nodejs=\"`defs`\" pulumi-lang-dotnet=\"`Defs`\" pulumi-lang-go=\"`defs`\" pulumi-lang-python=\"`defs`\" pulumi-lang-yaml=\"`defs`\" pulumi-lang-java=\"`defs`\" pulumi-lang-hcl=\"`defs`\"\u003e`defs`\u003c/span\u003e.\nFor example, the following schema defines a reference to a schema node\nnamed \"Pet\":\ntype: object\nproperties:\npet:\nref: #/defs/Pet\ndefs:\nPet:\ntype: object\nproperties:\nname:\ntype: string\nThe value of the \"pet\" property is a reference to the schema node\nnamed \"Pet\".\nSee details in\nhttps://json-schema.org/understanding-json-schema/structuring.\n"
                },
                "requireds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nRequired properties of Type.OBJECT.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe type of the data store. This field is readonly and populated by the\nserver.\nPossible values:\nPUBLIC_WEB\nUNSTRUCTURED\nFAQ\nCONNECTOR\n"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "description": "(Output)\nIndicate the items in the array must be unique. Only applies to TYPE.ARRAY.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "additionalProperties",
                        "anyOf",
                        "default",
                        "defs",
                        "description",
                        "enums",
                        "items",
                        "nullable",
                        "prefixItems",
                        "properties",
                        "ref",
                        "requireds",
                        "type",
                        "uniqueItems"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreTool:AppVersionSnapshotToolDataStoreTool": {
            "properties": {
                "boostSpecs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpec:AppVersionSnapshotToolDataStoreToolBoostSpec"
                    },
                    "description": "(Output)\nBoost specification to boost certain documents.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "engineSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolEngineSource:AppVersionSnapshotToolDataStoreToolEngineSource"
                    },
                    "description": "(Output)\nConfiguration for searching within an Engine, potentially targeting\nspecific DataStores.\nStructure is documented below.\n"
                },
                "maxResults": {
                    "type": "integer",
                    "description": "(Output)\nNumber of search results to return per query.\nThe default value is 10. The maximum allowed value is 10.\n"
                },
                "modalityConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfig:AppVersionSnapshotToolDataStoreToolModalityConfig"
                    },
                    "description": "(Output)\nThe modality configs for the data store.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "boostSpecs",
                        "description",
                        "engineSources",
                        "maxResults",
                        "modalityConfigs",
                        "name"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpec:AppVersionSnapshotToolDataStoreToolBoostSpec": {
            "properties": {
                "dataStores": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe Data Store where the boosting configuration is applied. Full resource\nname of DataStore, such as\nprojects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}.\n"
                },
                "specs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpecSpec:AppVersionSnapshotToolDataStoreToolBoostSpecSpec"
                    },
                    "description": "(Output)\nA list of boosting specifications.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dataStores",
                        "specs"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpecSpec:AppVersionSnapshotToolDataStoreToolBoostSpecSpec": {
            "properties": {
                "conditionBoostSpecs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpec:AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpec"
                    },
                    "description": "(Output)\nA list of boosting specifications.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "conditionBoostSpecs"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpec:AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpec": {
            "properties": {
                "boost": {
                    "type": "number",
                    "description": "(Output)\nStrength of the boost, which should be in [-1, 1]. Negative boost means\ndemotion. Default is 0.0.\nSetting to 1.0 gives the suggestions a big promotion. However, it does\nnot necessarily mean that the top result will be a boosted suggestion.\nSetting to -1.0 gives the suggestions a big demotion. However, other\nsuggestions that are relevant might still be shown.\nSetting to 0.0 means no boost applied. The boosting condition is\nignored.\n"
                },
                "boostControlSpecs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpec:AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpec"
                    },
                    "description": "(Output)\nSpecification for custom ranking based on customer specified attribute\nvalue. It provides more controls for customized ranking than the simple\n(condition, boost) combination above.\nStructure is documented below.\n"
                },
                "condition": {
                    "type": "string",
                    "description": "(Output)\nAn expression which specifies a boost condition. The syntax is the same\nas filter expression syntax. Currently, the only supported condition is\na list of BCP-47 lang codes.\nExample: To boost suggestions in languages en or fr:\n(lang_code: ANY(\"en\", \"fr\"))\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "boost",
                        "boostControlSpecs",
                        "condition"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpec:AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpec": {
            "properties": {
                "attributeType": {
                    "type": "string",
                    "description": "(Output)\nThe attribute type to be used to determine the boost amount. The\nattribute value can be derived from the field value of the specified\nfield_name. In the case of numerical it is straightforward i.e.\u003cspan pulumi-lang-nodejs=\"\nattributeValue \" pulumi-lang-dotnet=\"\nAttributeValue \" pulumi-lang-go=\"\nattributeValue \" pulumi-lang-python=\"\nattribute_value \" pulumi-lang-yaml=\"\nattributeValue \" pulumi-lang-java=\"\nattributeValue \" pulumi-lang-hcl=\"\nattribute_value \"\u003e\nattributeValue \u003c/span\u003e= numerical_field_value. In the case of freshness\nhowever,\u003cspan pulumi-lang-nodejs=\" attributeValue \" pulumi-lang-dotnet=\" AttributeValue \" pulumi-lang-go=\" attributeValue \" pulumi-lang-python=\" attribute_value \" pulumi-lang-yaml=\" attributeValue \" pulumi-lang-java=\" attributeValue \" pulumi-lang-hcl=\" attribute_value \"\u003e attributeValue \u003c/span\u003e= (time.now() - datetime_field_value).\nPossible values:\nNUMERICAL\nFRESHNESS\n"
                },
                "controlPoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpecControlPoint:AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpecControlPoint"
                    },
                    "description": "(Output)\nThe control points used to define the curve. The monotonic function\n(defined through the\u003cspan pulumi-lang-nodejs=\" interpolationType \" pulumi-lang-dotnet=\" InterpolationType \" pulumi-lang-go=\" interpolationType \" pulumi-lang-python=\" interpolation_type \" pulumi-lang-yaml=\" interpolationType \" pulumi-lang-java=\" interpolationType \" pulumi-lang-hcl=\" interpolation_type \"\u003e interpolationType \u003c/span\u003eabove) passes through the\ncontrol points listed here.\nStructure is documented below.\n"
                },
                "fieldName": {
                    "type": "string",
                    "description": "(Output)\nThe name of the field whose value will be used to determine the\nboost amount.\n"
                },
                "interpolationType": {
                    "type": "string",
                    "description": "(Output)\nThe interpolation type to be applied to connect the control points\nlisted below.\nPossible values:\nLINEAR\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "attributeType",
                        "controlPoints",
                        "fieldName",
                        "interpolationType"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpecControlPoint:AppVersionSnapshotToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpecControlPoint": {
            "properties": {
                "attributeValue": {
                    "type": "string",
                    "description": "(Output)\nCan be one of:\n1. The numerical field value.\n2. The duration spec for freshness:\nThe value must be formatted as an XSD `dayTimeDuration` value (a\nrestricted subset of an ISO 8601 duration value). The pattern for\nthis is: `nDnM]`.\n"
                },
                "boostAmount": {
                    "type": "number",
                    "description": "(Output)\nThe value between -1 to 1 by which to boost the score if the\u003cspan pulumi-lang-nodejs=\"\nattributeValue \" pulumi-lang-dotnet=\"\nAttributeValue \" pulumi-lang-go=\"\nattributeValue \" pulumi-lang-python=\"\nattribute_value \" pulumi-lang-yaml=\"\nattributeValue \" pulumi-lang-java=\"\nattributeValue \" pulumi-lang-hcl=\"\nattribute_value \"\u003e\nattributeValue \u003c/span\u003eevaluates to the value specified above.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "attributeValue",
                        "boostAmount"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolEngineSource:AppVersionSnapshotToolDataStoreToolEngineSource": {
            "properties": {
                "dataStoreSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSource:AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSource"
                    },
                    "description": "(Output)\nUse to target specific DataStores within the Engine.\nIf empty, the search applies to all DataStores associated with the\nEngine.\nStructure is documented below.\n"
                },
                "engine": {
                    "type": "string",
                    "description": "(Output)\nFull resource name of the Engine.\nFormat:\n`projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`\n"
                },
                "filter": {
                    "type": "string",
                    "description": "(Output)\nFilter specification for the DataStore.\nSee:\nhttps://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dataStoreSources",
                        "engine",
                        "filter"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSource:AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSource": {
            "properties": {
                "dataStores": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSourceDataStore:AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSourceDataStore"
                    },
                    "description": "(Output)\nA DataStore resource in Vertex AI Search.\nStructure is documented below.\n"
                },
                "filter": {
                    "type": "string",
                    "description": "(Output)\nFilter specification for the DataStore.\nSee:\nhttps://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dataStores",
                        "filter"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSourceDataStore:AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSourceDataStore": {
            "properties": {
                "connectorConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSourceDataStoreConnectorConfig:AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSourceDataStoreConnectorConfig"
                    },
                    "description": "(Output)\nThe connector config for the data store connection.\nStructure is documented below.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was created.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "documentProcessingMode": {
                    "type": "string",
                    "description": "(Output)\nThe document processing mode for the data store connection.\nOnly set for PUBLIC_WEB and UNSTRUCTURED data stores.\nPossible values:\nDOCUMENTS\nCHUNKS\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe type of the data store. This field is readonly and populated by the\nserver.\nPossible values:\nPUBLIC_WEB\nUNSTRUCTURED\nFAQ\nCONNECTOR\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "connectorConfigs",
                        "createTime",
                        "displayName",
                        "documentProcessingMode",
                        "name",
                        "type"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSourceDataStoreConnectorConfig:AppVersionSnapshotToolDataStoreToolEngineSourceDataStoreSourceDataStoreConnectorConfig": {
            "properties": {
                "collection": {
                    "type": "string",
                    "description": "(Output)\nResource name of the collection the data store belongs to.\n"
                },
                "collectionDisplayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the collection the data store belongs to.\n"
                },
                "dataSource": {
                    "type": "string",
                    "description": "(Output)\nThe name of the data source.\nExample: \u003cspan pulumi-lang-nodejs=\"`salesforce`\" pulumi-lang-dotnet=\"`Salesforce`\" pulumi-lang-go=\"`salesforce`\" pulumi-lang-python=\"`salesforce`\" pulumi-lang-yaml=\"`salesforce`\" pulumi-lang-java=\"`salesforce`\" pulumi-lang-hcl=\"`salesforce`\"\u003e`salesforce`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`jira`\" pulumi-lang-dotnet=\"`Jira`\" pulumi-lang-go=\"`jira`\" pulumi-lang-python=\"`jira`\" pulumi-lang-yaml=\"`jira`\" pulumi-lang-java=\"`jira`\" pulumi-lang-hcl=\"`jira`\"\u003e`jira`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`confluence`\" pulumi-lang-dotnet=\"`Confluence`\" pulumi-lang-go=\"`confluence`\" pulumi-lang-python=\"`confluence`\" pulumi-lang-yaml=\"`confluence`\" pulumi-lang-java=\"`confluence`\" pulumi-lang-hcl=\"`confluence`\"\u003e`confluence`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bigquery`\" pulumi-lang-dotnet=\"`Bigquery`\" pulumi-lang-go=\"`bigquery`\" pulumi-lang-python=\"`bigquery`\" pulumi-lang-yaml=\"`bigquery`\" pulumi-lang-java=\"`bigquery`\" pulumi-lang-hcl=\"`bigquery`\"\u003e`bigquery`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "collection",
                        "collectionDisplayName",
                        "dataSource"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfig:AppVersionSnapshotToolDataStoreToolModalityConfig": {
            "properties": {
                "groundingConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigGroundingConfig:AppVersionSnapshotToolDataStoreToolModalityConfigGroundingConfig"
                    },
                    "description": "(Output)\nGrounding configuration.\nStructure is documented below.\n"
                },
                "modalityType": {
                    "type": "string",
                    "description": "(Output)\nThe modality type.\nPossible values:\nTEXT\nAUDIO\n"
                },
                "rewriterConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigRewriterConfig:AppVersionSnapshotToolDataStoreToolModalityConfigRewriterConfig"
                    },
                    "description": "(Output)\nRewriter configuration.\nStructure is documented below.\n"
                },
                "summarizationConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigSummarizationConfig:AppVersionSnapshotToolDataStoreToolModalityConfigSummarizationConfig"
                    },
                    "description": "(Output)\nSummarization configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "groundingConfigs",
                        "modalityType",
                        "rewriterConfigs",
                        "summarizationConfigs"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigGroundingConfig:AppVersionSnapshotToolDataStoreToolModalityConfigGroundingConfig": {
            "properties": {
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "groundingLevel": {
                    "type": "number",
                    "description": "(Output)\nThe groundedness threshold of the answer based on the retrieved sources.\nThe value has a configurable range of [1, 5]. The level is used to\nthreshold the groundedness of the answer, meaning that all responses with\na groundedness score below the threshold will fall back to returning\nrelevant snippets only.\nFor example, a level of 3 means that the groundedness score must be\n3 or higher for the response to be returned.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "disabled",
                        "groundingLevel"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigRewriterConfig:AppVersionSnapshotToolDataStoreToolModalityConfigRewriterConfig": {
            "properties": {
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "modelSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigRewriterConfigModelSetting:AppVersionSnapshotToolDataStoreToolModalityConfigRewriterConfigModelSetting"
                    },
                    "description": "(Output)\nModel settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "(Output)\nThe prompt definition. If not set, default prompt will be used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "disabled",
                        "modelSettings",
                        "prompt"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigRewriterConfigModelSetting:AppVersionSnapshotToolDataStoreToolModalityConfigRewriterConfigModelSetting": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "(Output)\nThe LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "(Output)\nIf set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "model",
                        "temperature"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigSummarizationConfig:AppVersionSnapshotToolDataStoreToolModalityConfigSummarizationConfig": {
            "properties": {
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nWhether summarization is disabled.\n"
                },
                "modelSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigSummarizationConfigModelSetting:AppVersionSnapshotToolDataStoreToolModalityConfigSummarizationConfigModelSetting"
                    },
                    "description": "(Output)\nModel settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "(Output)\nThe prompt definition. If not set, default prompt will be used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "disabled",
                        "modelSettings",
                        "prompt"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolDataStoreToolModalityConfigSummarizationConfigModelSetting:AppVersionSnapshotToolDataStoreToolModalityConfigSummarizationConfigModelSetting": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "(Output)\nThe LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "(Output)\nIf set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "model",
                        "temperature"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolGoogleSearchTool:AppVersionSnapshotToolGoogleSearchTool": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "excludeDomains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nList of domains to be excluded from the search results.\nExample: \"example.com\".\nA maximum of 2000 domains can be excluded.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "excludeDomains",
                        "name"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiTool:AppVersionSnapshotToolOpenApiTool": {
            "properties": {
                "apiAuthentications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthentication:AppVersionSnapshotToolOpenApiToolApiAuthentication"
                    },
                    "description": "(Output)\nAuthentication information required for API calls.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "ignoreUnknownFields": {
                    "type": "boolean",
                    "description": "(Output)\nIf true, the agent will ignore unknown fields in the API response for all\noperations defined in the OpenAPI schema.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "openApiSchema": {
                    "type": "string",
                    "description": "(Output)\nThe OpenAPI schema of the toolset.\n"
                },
                "serviceDirectoryConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiToolServiceDirectoryConfig:AppVersionSnapshotToolOpenApiToolServiceDirectoryConfig"
                    },
                    "description": "(Output)\nConfiguration for tools using Service Directory.\nStructure is documented below.\n"
                },
                "tlsConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiToolTlsConfig:AppVersionSnapshotToolOpenApiToolTlsConfig"
                    },
                    "description": "(Output)\nThe TLS configuration.\nStructure is documented below.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe server URL of the Open API schema.\nThis field is only set in toolsets in the environment dependencies\nduring the export process if the schema contains a server url.\nDuring the import process, if this url is present in the environment dependencies\nand the schema has the $env_var placeholder,\nit will replace the placeholder in the schema.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiAuthentications",
                        "description",
                        "ignoreUnknownFields",
                        "name",
                        "openApiSchema",
                        "serviceDirectoryConfigs",
                        "tlsConfigs",
                        "url"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthentication:AppVersionSnapshotToolOpenApiToolApiAuthentication": {
            "properties": {
                "apiKeyConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthenticationApiKeyConfig:AppVersionSnapshotToolOpenApiToolApiAuthenticationApiKeyConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with API key.\nStructure is documented below.\n"
                },
                "oauthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthenticationOauthConfig:AppVersionSnapshotToolOpenApiToolApiAuthenticationOauthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with OAuth.\nStructure is documented below.\n"
                },
                "serviceAccountAuthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthenticationServiceAccountAuthConfig:AppVersionSnapshotToolOpenApiToolApiAuthenticationServiceAccountAuthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication using a custom service account.\nStructure is documented below.\n"
                },
                "serviceAgentIdTokenAuthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthenticationServiceAgentIdTokenAuthConfig:AppVersionSnapshotToolOpenApiToolApiAuthenticationServiceAgentIdTokenAuthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with [ID\ntoken](https://cloud.google.com/docs/authentication/token-types#id) generated\nfrom service agent.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiKeyConfigs",
                        "oauthConfigs",
                        "serviceAccountAuthConfigs",
                        "serviceAgentIdTokenAuthConfigs"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthenticationApiKeyConfig:AppVersionSnapshotToolOpenApiToolApiAuthenticationApiKeyConfig": {
            "properties": {
                "apiKeySecretVersion": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource storing the API key.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "keyName": {
                    "type": "string",
                    "description": "(Output)\nThe parameter name or the header name of the API key.\nE.g., If the API request is \"https://example.com/act?X-Api-Key=\", \"X-Api-Key\" would be the parameter name.\n"
                },
                "requestLocation": {
                    "type": "string",
                    "description": "(Output)\nKey location in the request.\nPossible values:\nHEADER\nQUERY_STRING\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiKeySecretVersion",
                        "keyName",
                        "requestLocation"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthenticationOauthConfig:AppVersionSnapshotToolOpenApiToolApiAuthenticationOauthConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "(Output)\nThe client ID from the OAuth provider.\n"
                },
                "clientSecretVersion": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource storing the\nclient secret.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "oauthGrantType": {
                    "type": "string",
                    "description": "(Output)\nOAuth grant types.\nPossible values:\nCLIENT_CREDENTIAL\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe OAuth scopes to grant.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "(Output)\nThe token endpoint in the OAuth provider to exchange for an access token.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clientId",
                        "clientSecretVersion",
                        "oauthGrantType",
                        "scopes",
                        "tokenEndpoint"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthenticationServiceAccountAuthConfig:AppVersionSnapshotToolOpenApiToolApiAuthenticationServiceAccountAuthConfig": {
            "properties": {
                "serviceAccount": {
                    "type": "string",
                    "description": "(Output)\nThe email address of the service account used for authenticatation. CES\nuses this service account to exchange an access token and the access token\nis then sent in the `Authorization` header of the request.\nThe service account must have the\n`roles/iam.serviceAccountTokenCreator` role granted to the\nCES service agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceAccount"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiToolApiAuthenticationServiceAgentIdTokenAuthConfig:AppVersionSnapshotToolOpenApiToolApiAuthenticationServiceAgentIdTokenAuthConfig": {
            "type": "object"
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiToolServiceDirectoryConfig:AppVersionSnapshotToolOpenApiToolServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "(Output)\nThe name of [Service\nDirectory](https://cloud.google.com/service-directory) service.\nFormat:\n`projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`.\nLocation of the service directory must be the same as the location of the\napp.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "service"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiToolTlsConfig:AppVersionSnapshotToolOpenApiToolTlsConfig": {
            "properties": {
                "caCerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolOpenApiToolTlsConfigCaCert:AppVersionSnapshotToolOpenApiToolTlsConfigCaCert"
                    },
                    "description": "(Output)\nSpecifies a list of allowed custom CA certificates for HTTPS\nverification.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "caCerts"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolOpenApiToolTlsConfigCaCert:AppVersionSnapshotToolOpenApiToolTlsConfigCaCert": {
            "properties": {
                "cert": {
                    "type": "string",
                    "description": "(Output)\nThe allowed custom CA certificates (in DER format) for\nHTTPS verification. This overrides the default SSL trust store. If this\nis empty or unspecified, CES will use Google's default trust\nstore to verify certificates. N.B. Make sure the HTTPS server\ncertificates are signed with \"subject alt name\". For instance a\ncertificate can be self-signed using the following command,\nopenssl x509 -req -days 200 -in example.com.csr \\\n-signkey example.com.key \\\n-out example.com.crt \\\n-extfile \u003c(printf \"\\nsubjectAltName='DNS:www.example.com'\")\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cert",
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolPythonFunction:AppVersionSnapshotToolPythonFunction": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "(Output)\nThe Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "name",
                        "pythonCode"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolSystemTool:AppVersionSnapshotToolSystemTool": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "name"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolset:AppVersionSnapshotToolset": {
            "properties": {
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the app version.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "(Output)\nETag used to ensure the object hasn't changed during a read-modify-write\noperation. If the etag is empty, the update will overwrite any concurrent\nchanges.\n"
                },
                "executionType": {
                    "type": "string",
                    "description": "(Output)\nPossible values:\nSYNCHRONOUS\nASYNCHRONOUS\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nIdentifier. The unique identifier of the toolset.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                },
                "openApiToolsets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolset:AppVersionSnapshotToolsetOpenApiToolset"
                    },
                    "description": "(Output)\nA toolset that contains a list of tools that are defined by an OpenAPI\nschema.\nStructure is documented below.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the toolset was last updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createTime",
                        "description",
                        "displayName",
                        "etag",
                        "executionType",
                        "name",
                        "openApiToolsets",
                        "updateTime"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolset:AppVersionSnapshotToolsetOpenApiToolset": {
            "properties": {
                "apiAuthentications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthentication:AppVersionSnapshotToolsetOpenApiToolsetApiAuthentication"
                    },
                    "description": "(Output)\nAuthentication information required for API calls.\nStructure is documented below.\n"
                },
                "ignoreUnknownFields": {
                    "type": "boolean",
                    "description": "(Output)\nIf true, the agent will ignore unknown fields in the API response for all\noperations defined in the OpenAPI schema.\n"
                },
                "openApiSchema": {
                    "type": "string",
                    "description": "(Output)\nThe OpenAPI schema of the toolset.\n"
                },
                "serviceDirectoryConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetServiceDirectoryConfig:AppVersionSnapshotToolsetOpenApiToolsetServiceDirectoryConfig"
                    },
                    "description": "(Output)\nConfiguration for tools using Service Directory.\nStructure is documented below.\n"
                },
                "tlsConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetTlsConfig:AppVersionSnapshotToolsetOpenApiToolsetTlsConfig"
                    },
                    "description": "(Output)\nThe TLS configuration.\nStructure is documented below.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe server URL of the Open API schema.\nThis field is only set in toolsets in the environment dependencies\nduring the export process if the schema contains a server url.\nDuring the import process, if this url is present in the environment dependencies\nand the schema has the $env_var placeholder,\nit will replace the placeholder in the schema.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiAuthentications",
                        "ignoreUnknownFields",
                        "openApiSchema",
                        "serviceDirectoryConfigs",
                        "tlsConfigs",
                        "url"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthentication:AppVersionSnapshotToolsetOpenApiToolsetApiAuthentication": {
            "properties": {
                "apiKeyConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationApiKeyConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationApiKeyConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with API key.\nStructure is documented below.\n"
                },
                "bearerTokenConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationBearerTokenConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationBearerTokenConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with a bearer token.\nStructure is documented below.\n"
                },
                "oauthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationOauthConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationOauthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with OAuth.\nStructure is documented below.\n"
                },
                "serviceAccountAuthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationServiceAccountAuthConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationServiceAccountAuthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication using a custom service account.\nStructure is documented below.\n"
                },
                "serviceAgentIdTokenAuthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationServiceAgentIdTokenAuthConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationServiceAgentIdTokenAuthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with [ID\ntoken](https://cloud.google.com/docs/authentication/token-types#id) generated\nfrom service agent.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiKeyConfigs",
                        "bearerTokenConfigs",
                        "oauthConfigs",
                        "serviceAccountAuthConfigs",
                        "serviceAgentIdTokenAuthConfigs"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationApiKeyConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationApiKeyConfig": {
            "properties": {
                "apiKeySecretVersion": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource storing the API key.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "keyName": {
                    "type": "string",
                    "description": "(Output)\nThe parameter name or the header name of the API key.\nE.g., If the API request is \"https://example.com/act?X-Api-Key=\", \"X-Api-Key\" would be the parameter name.\n"
                },
                "requestLocation": {
                    "type": "string",
                    "description": "(Output)\nKey location in the request.\nPossible values:\nHEADER\nQUERY_STRING\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiKeySecretVersion",
                        "keyName",
                        "requestLocation"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationBearerTokenConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationBearerTokenConfig": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "(Output)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "token"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationOauthConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationOauthConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "(Output)\nThe client ID from the OAuth provider.\n"
                },
                "clientSecretVersion": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource storing the\nclient secret.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "oauthGrantType": {
                    "type": "string",
                    "description": "(Output)\nOAuth grant types.\nPossible values:\nCLIENT_CREDENTIAL\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe OAuth scopes to grant.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "(Output)\nThe token endpoint in the OAuth provider to exchange for an access token.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clientId",
                        "clientSecretVersion",
                        "oauthGrantType",
                        "scopes",
                        "tokenEndpoint"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationServiceAccountAuthConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationServiceAccountAuthConfig": {
            "properties": {
                "serviceAccount": {
                    "type": "string",
                    "description": "(Output)\nThe email address of the service account used for authenticatation. CES\nuses this service account to exchange an access token and the access token\nis then sent in the `Authorization` header of the request.\nThe service account must have the\n`roles/iam.serviceAccountTokenCreator` role granted to the\nCES service agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceAccount"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationServiceAgentIdTokenAuthConfig:AppVersionSnapshotToolsetOpenApiToolsetApiAuthenticationServiceAgentIdTokenAuthConfig": {
            "type": "object"
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetServiceDirectoryConfig:AppVersionSnapshotToolsetOpenApiToolsetServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "(Output)\nThe name of [Service\nDirectory](https://cloud.google.com/service-directory) service.\nFormat:\n`projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`.\nLocation of the service directory must be the same as the location of the\napp.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "service"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetTlsConfig:AppVersionSnapshotToolsetOpenApiToolsetTlsConfig": {
            "properties": {
                "caCerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetTlsConfigCaCert:AppVersionSnapshotToolsetOpenApiToolsetTlsConfigCaCert"
                    },
                    "description": "(Output)\nSpecifies a list of allowed custom CA certificates for HTTPS\nverification.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "caCerts"
                    ]
                }
            }
        },
        "gcp:ces/AppVersionSnapshotToolsetOpenApiToolsetTlsConfigCaCert:AppVersionSnapshotToolsetOpenApiToolsetTlsConfigCaCert": {
            "properties": {
                "cert": {
                    "type": "string",
                    "description": "(Output)\nThe allowed custom CA certificates (in DER format) for\nHTTPS verification. This overrides the default SSL trust store. If this\nis empty or unspecified, CES will use Google's default trust\nstore to verify certificates. N.B. Make sure the HTTPS server\ncertificates are signed with \"subject alt name\". For instance a\ncertificate can be self-signed using the following command,\nopenssl x509 -req -days 200 -in example.com.csr \\\n-signkey example.com.key \\\n-out example.com.crt \\\n-extfile \u003c(printf \"\\nsubjectAltName='DNS:www.example.com'\")\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the app version.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cert",
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/DeploymentChannelProfile:DeploymentChannelProfile": {
            "properties": {
                "channelType": {
                    "type": "string",
                    "description": "The type of the channel profile.\nPossible values:\nUNKNOWN\nWEB_UI\nAPI\nTWILIO\nGOOGLE_TELEPHONY_PLATFORM\nCONTACT_CENTER_AS_A_SERVICE\nFIVE9\nCONTACT_CENTER_INTEGRATION\n"
                },
                "disableBargeInControl": {
                    "type": "boolean",
                    "description": "Whether to disable user barge-in control in the conversation.\n- **true**: User interruptions are disabled while the agent is speaking.\n- **false**: The agent retains automatic control over when the user can\ninterrupt.\n"
                },
                "disableDtmf": {
                    "type": "boolean",
                    "description": "Whether to disable DTMF (dual-tone multi-frequency).\n"
                },
                "personaProperty": {
                    "$ref": "#/types/gcp:ces/DeploymentChannelProfilePersonaProperty:DeploymentChannelProfilePersonaProperty",
                    "description": "Represents the persona property of a channel.\nStructure is documented below.\n"
                },
                "profileId": {
                    "type": "string",
                    "description": "The unique identifier of the channel profile.\n"
                },
                "webWidgetConfig": {
                    "$ref": "#/types/gcp:ces/DeploymentChannelProfileWebWidgetConfig:DeploymentChannelProfileWebWidgetConfig",
                    "description": "Message for configuration for the web widget.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/DeploymentChannelProfilePersonaProperty:DeploymentChannelProfilePersonaProperty": {
            "properties": {
                "persona": {
                    "type": "string",
                    "description": "The persona of the channel.\nPossible values:\nUNKNOWN\nCONCISE\nCHATTY\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/DeploymentChannelProfileWebWidgetConfig:DeploymentChannelProfileWebWidgetConfig": {
            "properties": {
                "modality": {
                    "type": "string",
                    "description": "The modality of the web widget.\nPossible values:\nMODALITY_UNSPECIFIED\nCHAT_AND_VOICE\nVOICE_ONLY\nCHAT_ONLY\nCHAT_VOICE_AND_VIDEO\n"
                },
                "securitySettings": {
                    "$ref": "#/types/gcp:ces/DeploymentChannelProfileWebWidgetConfigSecuritySettings:DeploymentChannelProfileWebWidgetConfigSecuritySettings",
                    "description": "The security settings of the web widget.\nStructure is documented below.\n"
                },
                "theme": {
                    "type": "string",
                    "description": "The theme of the web widget.\nPossible values:\nTHEME_UNSPECIFIED\nLIGHT\nDARK\n"
                },
                "webWidgetTitle": {
                    "type": "string",
                    "description": "The title of the web widget.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/DeploymentChannelProfileWebWidgetConfigSecuritySettings:DeploymentChannelProfileWebWidgetConfigSecuritySettings": {
            "properties": {
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The origins that are allowed to host the web widget. An origin is defined by RFC 6454. If empty, all origins are allowed. A maximum of 100 origins is allowed. Example: \"https://example.com\"\n"
                },
                "enableOriginCheck": {
                    "type": "boolean",
                    "description": "Indicates whether origin check for the web widget is enabled. If true, the web widget will check the origin of the website that loads the web widget and only allow it to be loaded in the same origin or any of the allowed origins.\n"
                },
                "enablePublicAccess": {
                    "type": "boolean",
                    "description": "Indicates whether public access to the web widget is enabled. If true, the web widget will be publicly accessible. If false, the web widget must be integrated with your own authentication and authorization system to return valid credentials for accessing the CES agent.\n"
                },
                "enableRecaptcha": {
                    "type": "boolean",
                    "description": "Indicates whether reCAPTCHA verification for the web widget is enabled.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGolden:EvaluationGolden": {
            "properties": {
                "evaluationExpectations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The evaluation expectations to evaluate the replayed conversation against. Format: projects/{project}/locations/{location}/apps/{app}/evaluationExpectations/{evaluationExpectation}\n"
                },
                "turns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/EvaluationGoldenTurn:EvaluationGoldenTurn"
                    },
                    "description": "The golden turns required to replay a golden conversation.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "turns"
            ]
        },
        "gcp:ces/EvaluationGoldenTurn:EvaluationGoldenTurn": {
            "properties": {
                "rootSpans": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/EvaluationGoldenTurnRootSpan:EvaluationGoldenTurnRootSpan"
                    },
                    "description": "(Output)\nThe root span of the golden turn for processing and maintaining audio information.\nStructure is documented below.\n"
                },
                "steps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStep:EvaluationGoldenTurnStep"
                    },
                    "description": "The sequence of steps required to replay a golden conversation turn.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedGoldenTurnsRootSpan\"\" pulumi-lang-dotnet=\"\"NestedGoldenTurnsRootSpan\"\" pulumi-lang-go=\"\"nestedGoldenTurnsRootSpan\"\" pulumi-lang-python=\"\"nested_golden_turns_root_span\"\" pulumi-lang-yaml=\"\"nestedGoldenTurnsRootSpan\"\" pulumi-lang-java=\"\"nestedGoldenTurnsRootSpan\"\" pulumi-lang-hcl=\"\"nested_golden_turns_root_span\"\"\u003e\"nestedGoldenTurnsRootSpan\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`rootSpan`\" pulumi-lang-dotnet=\"`RootSpan`\" pulumi-lang-go=\"`rootSpan`\" pulumi-lang-python=\"`root_span`\" pulumi-lang-yaml=\"`rootSpan`\" pulumi-lang-java=\"`rootSpan`\" pulumi-lang-hcl=\"`root_span`\"\u003e`rootSpan`\u003c/span\u003e block contains:\n"
                }
            },
            "type": "object",
            "required": [
                "steps"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "rootSpans",
                        "steps"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnRootSpan:EvaluationGoldenTurnRootSpan": {
            "properties": {
                "attributes": {
                    "type": "string",
                    "description": "Output only. Key-value attributes associated with the span.\n"
                },
                "childSpans": {
                    "type": "string",
                    "description": "Output only. The child spans that are nested under this span.\n"
                },
                "duration": {
                    "type": "string",
                    "description": "Output only. The duration of the span.\n"
                },
                "endTime": {
                    "type": "string",
                    "description": "Output only. The end time of the span.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Identifier. The unique identifier of the evaluation.\nFormat: `projects/{project}/locations/{location}/apps/{app}/evaluations/{evaluation}`\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Output only. The start time of the span.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "attributes",
                        "childSpans",
                        "duration",
                        "endTime",
                        "name",
                        "startTime"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStep:EvaluationGoldenTurnStep": {
            "properties": {
                "agentTransfer": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepAgentTransfer:EvaluationGoldenTurnStepAgentTransfer",
                    "description": "Represents an event indicating the transfer of the conversation to a different agent.\nStructure is documented below.\n"
                },
                "expectation": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectation:EvaluationGoldenTurnStepExpectation",
                    "description": "Executes an expectation on the current turn to verify the agent's behavior. Note: 'user_input' and 'expectation' are mutually exclusive.\nStructure is documented below.\n"
                },
                "userInput": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepUserInput:EvaluationGoldenTurnStepUserInput",
                    "description": "Represents user input for the conversation. Note: 'user_input' and 'expectation' are mutually exclusive.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGoldenTurnStepAgentTransfer:EvaluationGoldenTurnStepAgentTransfer": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the agent.\n"
                },
                "targetAgent": {
                    "type": "string",
                    "description": "The agent to which the conversation is being transferred.\n"
                }
            },
            "type": "object",
            "required": [
                "targetAgent"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "targetAgent"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectation:EvaluationGoldenTurnStepExpectation": {
            "properties": {
                "agentResponse": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponse:EvaluationGoldenTurnStepExpectationAgentResponse",
                    "description": "Expectation on agent response.\nStructure is documented below.\n"
                },
                "agentTransfer": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentTransfer:EvaluationGoldenTurnStepExpectationAgentTransfer",
                    "description": "Expectation on agent transfer.\nStructure is documented below.\n"
                },
                "mockToolResponse": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationMockToolResponse:EvaluationGoldenTurnStepExpectationMockToolResponse",
                    "description": "A mock response to provide if a tool is called.\nStructure is documented below.\n"
                },
                "note": {
                    "type": "string",
                    "description": "A note describing the expectation.\n"
                },
                "toolCall": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationToolCall:EvaluationGoldenTurnStepExpectationToolCall",
                    "description": "Expectation on tool call.\nStructure is documented below.\n"
                },
                "toolResponse": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationToolResponse:EvaluationGoldenTurnStepExpectationToolResponse",
                    "description": "Expectation on tool response.\nStructure is documented below.\n"
                },
                "updatedVariables": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationUpdatedVariables:EvaluationGoldenTurnStepExpectationUpdatedVariables",
                    "description": "Expectation on updated variables.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponse:EvaluationGoldenTurnStepExpectationAgentResponse": {
            "properties": {
                "chunks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunk:EvaluationGoldenTurnStepExpectationAgentResponseChunk"
                    },
                    "description": "Content of the message as a series of chunks.\nStructure is documented below.\n"
                },
                "role": {
                    "type": "string",
                    "description": "The role within the conversation, e.g., user, agent.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunk:EvaluationGoldenTurnStepExpectationAgentResponseChunk": {
            "properties": {
                "agentTransfer": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkAgentTransfer:EvaluationGoldenTurnStepExpectationAgentResponseChunkAgentTransfer",
                    "description": "Represents an event indicating the transfer of a conversation to a different agent.\nStructure is documented below.\n"
                },
                "blob": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkBlob:EvaluationGoldenTurnStepExpectationAgentResponseChunkBlob",
                    "description": "Represents a blob input or output in the conversation.\nStructure is documented below.\n"
                },
                "image": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkImage:EvaluationGoldenTurnStepExpectationAgentResponseChunkImage",
                    "description": "Represents an image input or output in the conversation.\nStructure is documented below.\n"
                },
                "text": {
                    "type": "string",
                    "description": "Text data.\n"
                },
                "toolCall": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkToolCall:EvaluationGoldenTurnStepExpectationAgentResponseChunkToolCall",
                    "description": "Request for the client or the agent to execute the specified tool.\nStructure is documented below.\n"
                },
                "toolResponse": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkToolResponse:EvaluationGoldenTurnStepExpectationAgentResponseChunkToolResponse",
                    "description": "The execution result of a specific tool from the client or the agent.\nStructure is documented below.\n"
                },
                "updatedVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Updated variables in JSON object format.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkAgentTransfer:EvaluationGoldenTurnStepExpectationAgentResponseChunkAgentTransfer": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the agent.\n"
                },
                "targetAgent": {
                    "type": "string",
                    "description": "The agent to which the conversation is being transferred.\n"
                }
            },
            "type": "object",
            "required": [
                "targetAgent"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "targetAgent"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkBlob:EvaluationGoldenTurnStepExpectationAgentResponseChunkBlob": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "Raw bytes of the blob.\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "The IANA standard MIME type of the source data.\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "mimeType"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkImage:EvaluationGoldenTurnStepExpectationAgentResponseChunkImage": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "Raw bytes of the image.\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "The IANA standard MIME type of the source data.\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "mimeType"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkToolCall:EvaluationGoldenTurnStepExpectationAgentResponseChunkToolCall": {
            "properties": {
                "args": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The input parameters and values for the tool in JSON object format.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the tool call.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "The resource name of the tool.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkToolCallToolsetTool:EvaluationGoldenTurnStepExpectationAgentResponseChunkToolCallToolsetTool",
                    "description": "A tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkToolCallToolsetTool:EvaluationGoldenTurnStepExpectationAgentResponseChunkToolCallToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkToolResponse:EvaluationGoldenTurnStepExpectationAgentResponseChunkToolResponse": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The matching ID of the tool call the response is for.\n"
                },
                "response": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The tool execution result in JSON object format.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "The resource name of the tool.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkToolResponseToolsetTool:EvaluationGoldenTurnStepExpectationAgentResponseChunkToolResponseToolsetTool",
                    "description": "A tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentResponseChunkToolResponseToolsetTool:EvaluationGoldenTurnStepExpectationAgentResponseChunkToolResponseToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationAgentTransfer:EvaluationGoldenTurnStepExpectationAgentTransfer": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the agent.\n"
                },
                "targetAgent": {
                    "type": "string",
                    "description": "The agent to which the conversation is being transferred.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationMockToolResponse:EvaluationGoldenTurnStepExpectationMockToolResponse": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Display name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Optional. Matching ID of the tool call.\n"
                },
                "response": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The tool execution result in JSON object format.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "Name of the tool to execute.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationMockToolResponseToolsetTool:EvaluationGoldenTurnStepExpectationMockToolResponseToolsetTool",
                    "description": "The toolset tool that got executed.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationMockToolResponseToolsetTool:EvaluationGoldenTurnStepExpectationMockToolResponseToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationToolCall:EvaluationGoldenTurnStepExpectationToolCall": {
            "properties": {
                "args": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The input parameters and values for the tool in JSON object format.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the tool call.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "The resource name of the tool.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationToolCallToolsetTool:EvaluationGoldenTurnStepExpectationToolCallToolsetTool",
                    "description": "A tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationToolCallToolsetTool:EvaluationGoldenTurnStepExpectationToolCallToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationToolResponse:EvaluationGoldenTurnStepExpectationToolResponse": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The matching ID of the tool call the response is for.\n"
                },
                "response": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The tool execution result in JSON object format.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "The resource name of the tool.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepExpectationToolResponseToolsetTool:EvaluationGoldenTurnStepExpectationToolResponseToolsetTool",
                    "description": "A tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationToolResponseToolsetTool:EvaluationGoldenTurnStepExpectationToolResponseToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepExpectationUpdatedVariables:EvaluationGoldenTurnStepExpectationUpdatedVariables": {
            "properties": {
                "notes": {
                    "type": "string",
                    "description": "Dummy property.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGoldenTurnStepUserInput:EvaluationGoldenTurnStepUserInput": {
            "properties": {
                "audio": {
                    "type": "string",
                    "description": "Audio data from the end user.\n"
                },
                "blob": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepUserInputBlob:EvaluationGoldenTurnStepUserInputBlob",
                    "description": "Blob data from the end user.\nStructure is documented below.\n"
                },
                "dtmf": {
                    "type": "string",
                    "description": "DTMF digits from the end user.\n"
                },
                "event": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepUserInputEvent:EvaluationGoldenTurnStepUserInputEvent",
                    "description": "An event to be sent to the session.\nStructure is documented below.\n"
                },
                "image": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepUserInputImage:EvaluationGoldenTurnStepUserInputImage",
                    "description": "Image data from the end user.\nStructure is documented below.\n"
                },
                "text": {
                    "type": "string",
                    "description": "Natural language query.\n"
                },
                "toolResponses": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepUserInputToolResponses:EvaluationGoldenTurnStepUserInputToolResponses",
                    "description": "The list of tool execution results.\nStructure is documented below.\n"
                },
                "variables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of variables to set.\n"
                },
                "willContinue": {
                    "type": "boolean",
                    "description": "Whether the session should continue.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGoldenTurnStepUserInputBlob:EvaluationGoldenTurnStepUserInputBlob": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "Raw bytes of the blob.\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "The IANA standard MIME type of the source data.\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "mimeType"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepUserInputEvent:EvaluationGoldenTurnStepUserInputEvent": {
            "properties": {
                "event": {
                    "type": "string",
                    "description": "Event name.\n"
                }
            },
            "type": "object",
            "required": [
                "event"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepUserInputImage:EvaluationGoldenTurnStepUserInputImage": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "Raw bytes of the image.\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "The IANA standard MIME type of the source data.\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "mimeType"
            ]
        },
        "gcp:ces/EvaluationGoldenTurnStepUserInputToolResponses:EvaluationGoldenTurnStepUserInputToolResponses": {
            "properties": {
                "toolResponses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepUserInputToolResponsesToolResponse:EvaluationGoldenTurnStepUserInputToolResponsesToolResponse"
                    },
                    "description": "The list of tool execution results.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationGoldenTurnStepUserInputToolResponsesToolResponse:EvaluationGoldenTurnStepUserInputToolResponsesToolResponse": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Display name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Optional. Matching ID of the tool call.\n"
                },
                "response": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Required. The tool execution result in JSON.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "Name of the tool to execute.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationGoldenTurnStepUserInputToolResponsesToolResponseToolsetTool:EvaluationGoldenTurnStepUserInputToolResponsesToolResponseToolsetTool",
                    "description": "The toolset tool that got executed.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "response"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationGoldenTurnStepUserInputToolResponsesToolResponseToolsetTool:EvaluationGoldenTurnStepUserInputToolResponsesToolResponseToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/EvaluationScenario:EvaluationScenario": {
            "properties": {
                "evaluationExpectations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Evaluation expectations.\n"
                },
                "maxTurns": {
                    "type": "integer",
                    "description": "Max turns.\n"
                },
                "rubrics": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Rubrics.\n"
                },
                "scenarioExpectations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectation:EvaluationScenarioScenarioExpectation"
                    },
                    "description": "Scenario expectations.\nStructure is documented below.\n"
                },
                "task": {
                    "type": "string",
                    "description": "The task to evaluate.\n"
                },
                "taskCompletionBehavior": {
                    "type": "string",
                    "description": "Task completion behavior.\n"
                },
                "userFacts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/EvaluationScenarioUserFact:EvaluationScenarioUserFact"
                    },
                    "description": "Facts about the user as a key value pair.\nStructure is documented below.\n"
                },
                "userGoalBehavior": {
                    "type": "string",
                    "description": "User goal behavior.\n"
                },
                "variableOverrides": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Variables / Session Parameters as context for the session, keyed by variable names. Members of this struct will override any default values set by the system.\n"
                }
            },
            "type": "object",
            "required": [
                "rubrics",
                "scenarioExpectations",
                "task"
            ]
        },
        "gcp:ces/EvaluationScenarioScenarioExpectation:EvaluationScenarioScenarioExpectation": {
            "properties": {
                "agentResponse": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponse:EvaluationScenarioScenarioExpectationAgentResponse",
                    "description": "Agent response.\nStructure is documented below.\n"
                },
                "toolExpectation": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationToolExpectation:EvaluationScenarioScenarioExpectationToolExpectation",
                    "description": "Tool expectation.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponse:EvaluationScenarioScenarioExpectationAgentResponse": {
            "properties": {
                "chunks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunk:EvaluationScenarioScenarioExpectationAgentResponseChunk"
                    },
                    "description": "Content of the message as a series of chunks.\nStructure is documented below.\n"
                },
                "role": {
                    "type": "string",
                    "description": "The role within the conversation, e.g., user, agent.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunk:EvaluationScenarioScenarioExpectationAgentResponseChunk": {
            "properties": {
                "agentTransfer": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkAgentTransfer:EvaluationScenarioScenarioExpectationAgentResponseChunkAgentTransfer",
                    "description": "Represents an event indicating the transfer of a conversation to a different agent.\nStructure is documented below.\n"
                },
                "blob": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkBlob:EvaluationScenarioScenarioExpectationAgentResponseChunkBlob",
                    "description": "Represents a blob input or output in the conversation.\nStructure is documented below.\n"
                },
                "image": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkImage:EvaluationScenarioScenarioExpectationAgentResponseChunkImage",
                    "description": "Represents an image input or output in the conversation.\nStructure is documented below.\n"
                },
                "text": {
                    "type": "string",
                    "description": "Text data.\n"
                },
                "toolCall": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkToolCall:EvaluationScenarioScenarioExpectationAgentResponseChunkToolCall",
                    "description": "Request for the client or the agent to execute the specified tool.\nStructure is documented below.\n"
                },
                "toolResponse": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkToolResponse:EvaluationScenarioScenarioExpectationAgentResponseChunkToolResponse",
                    "description": "The execution result of a specific tool from the client or the agent.\nStructure is documented below.\n"
                },
                "updatedVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Updated variables in JSON object format.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkAgentTransfer:EvaluationScenarioScenarioExpectationAgentResponseChunkAgentTransfer": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the agent.\n"
                },
                "targetAgent": {
                    "type": "string",
                    "description": "The agent to which the conversation is being transferred.\n"
                }
            },
            "type": "object",
            "required": [
                "targetAgent"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "targetAgent"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkBlob:EvaluationScenarioScenarioExpectationAgentResponseChunkBlob": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "Raw bytes of the blob.\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "The IANA standard MIME type of the source data.\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "mimeType"
            ]
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkImage:EvaluationScenarioScenarioExpectationAgentResponseChunkImage": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "Raw bytes of the image.\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "The IANA standard MIME type of the source data.\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "mimeType"
            ]
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkToolCall:EvaluationScenarioScenarioExpectationAgentResponseChunkToolCall": {
            "properties": {
                "args": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The input parameters and values for the tool in JSON object format.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the tool call.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "The resource name of the tool.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkToolCallToolsetTool:EvaluationScenarioScenarioExpectationAgentResponseChunkToolCallToolsetTool",
                    "description": "A tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkToolCallToolsetTool:EvaluationScenarioScenarioExpectationAgentResponseChunkToolCallToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkToolResponse:EvaluationScenarioScenarioExpectationAgentResponseChunkToolResponse": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The matching ID of the tool call the response is for.\n"
                },
                "response": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The tool execution result in JSON object format.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "The resource name of the tool.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkToolResponseToolsetTool:EvaluationScenarioScenarioExpectationAgentResponseChunkToolResponseToolsetTool",
                    "description": "A tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationAgentResponseChunkToolResponseToolsetTool:EvaluationScenarioScenarioExpectationAgentResponseChunkToolResponseToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationToolExpectation:EvaluationScenarioScenarioExpectationToolExpectation": {
            "properties": {
                "expectedToolCall": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationToolExpectationExpectedToolCall:EvaluationScenarioScenarioExpectationToolExpectationExpectedToolCall",
                    "description": "Expected tool call.\nStructure is documented below.\n"
                },
                "mockToolResponse": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationToolExpectationMockToolResponse:EvaluationScenarioScenarioExpectationToolExpectationMockToolResponse",
                    "description": "Mock tool response.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationToolExpectationExpectedToolCall:EvaluationScenarioScenarioExpectationToolExpectationExpectedToolCall": {
            "properties": {
                "args": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The input parameters and values for the tool in JSON object format.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Display name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Optional. The unique identifier of the tool call.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "Name of the tool.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationToolExpectationExpectedToolCallToolsetTool:EvaluationScenarioScenarioExpectationToolExpectationExpectedToolCallToolsetTool",
                    "description": "The toolset tool.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationToolExpectationExpectedToolCallToolsetTool:EvaluationScenarioScenarioExpectationToolExpectationExpectedToolCallToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationToolExpectationMockToolResponse:EvaluationScenarioScenarioExpectationToolExpectationMockToolResponse": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Display name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Optional. Matching ID of the tool call.\n"
                },
                "response": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The tool execution result in JSON object format.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "Name of the tool to execute.\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/EvaluationScenarioScenarioExpectationToolExpectationMockToolResponseToolsetTool:EvaluationScenarioScenarioExpectationToolExpectationMockToolResponseToolsetTool",
                    "description": "The toolset tool that got executed.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/EvaluationScenarioScenarioExpectationToolExpectationMockToolResponseToolsetTool:EvaluationScenarioScenarioExpectationToolExpectationMockToolResponseToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/EvaluationScenarioUserFact:EvaluationScenarioUserFact": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the user fact.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the user fact.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ]
        },
        "gcp:ces/ExampleMessage:ExampleMessage": {
            "properties": {
                "chunks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ExampleMessageChunk:ExampleMessageChunk"
                    },
                    "description": "Content of the message as a series of chunks.\nStructure is documented below.\n"
                },
                "role": {
                    "type": "string",
                    "description": "The role within the conversation, e.g., user, agent.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ExampleMessageChunk:ExampleMessageChunk": {
            "properties": {
                "agentTransfer": {
                    "$ref": "#/types/gcp:ces/ExampleMessageChunkAgentTransfer:ExampleMessageChunkAgentTransfer",
                    "description": "Represents an event indicating the transfer of a conversation to a different\nagent.\nStructure is documented below.\n"
                },
                "image": {
                    "$ref": "#/types/gcp:ces/ExampleMessageChunkImage:ExampleMessageChunkImage",
                    "description": "Represents an image input or output in the conversation.\nStructure is documented below.\n"
                },
                "text": {
                    "type": "string",
                    "description": "Text data.\n"
                },
                "toolCall": {
                    "$ref": "#/types/gcp:ces/ExampleMessageChunkToolCall:ExampleMessageChunkToolCall",
                    "description": "Request for the client or the agent to execute the specified tool.\nStructure is documented below.\n"
                },
                "toolResponse": {
                    "$ref": "#/types/gcp:ces/ExampleMessageChunkToolResponse:ExampleMessageChunkToolResponse",
                    "description": "The execution result of a specific tool from the client or the agent.\nStructure is documented below.\n"
                },
                "updatedVariables": {
                    "type": "string",
                    "description": "A struct represents variables that were updated in the conversation,\nkeyed by variable names.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ExampleMessageChunkAgentTransfer:ExampleMessageChunkAgentTransfer": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the agent.\n"
                },
                "targetAgent": {
                    "type": "string",
                    "description": "The agent to which the conversation is being transferred. The agent will\nhandle the conversation from this point forward.\nFormat: `projects/{project}/locations/{location}/apps/{app}/agents/{agent}`\n"
                }
            },
            "type": "object",
            "required": [
                "targetAgent"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "targetAgent"
                    ]
                }
            }
        },
        "gcp:ces/ExampleMessageChunkImage:ExampleMessageChunkImage": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "Raw bytes of the image.\n"
                },
                "mimeType": {
                    "type": "string",
                    "description": "The IANA standard MIME type of the source data.\nSupported image types includes:\n* image/png\n* image/jpeg\n* image/webp\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "mimeType"
            ]
        },
        "gcp:ces/ExampleMessageChunkToolCall:ExampleMessageChunkToolCall": {
            "properties": {
                "args": {
                    "type": "string",
                    "description": "The input parameters and values for the tool in JSON object format.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the tool call. If populated, the client should\nreturn the execution result with the matching ID in\nToolResponse.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "The name of the tool to execute.\nFormat: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/ExampleMessageChunkToolCallToolsetTool:ExampleMessageChunkToolCallToolsetTool",
                    "description": "A tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/ExampleMessageChunkToolCallToolsetTool:ExampleMessageChunkToolCallToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset from which this tool is derived.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/ExampleMessageChunkToolResponse:ExampleMessageChunkToolResponse": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nDisplay name of the tool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The matching ID of the tool call the response is for.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The tool execution result in JSON object format.\nUse \"output\" key to specify tool response and \"error\" key to specify\nerror details (if any). If \"output\" and \"error\" keys are not specified,\nthen whole \"response\" is treated as tool execution result.\n"
                },
                "tool": {
                    "type": "string",
                    "description": "The name of the tool to execute.\nFormat: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`\n"
                },
                "toolsetTool": {
                    "$ref": "#/types/gcp:ces/ExampleMessageChunkToolResponseToolsetTool:ExampleMessageChunkToolResponseToolsetTool",
                    "description": "A tool that is created from a toolset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName",
                        "response"
                    ]
                }
            }
        },
        "gcp:ces/ExampleMessageChunkToolResponseToolsetTool:ExampleMessageChunkToolResponseToolsetTool": {
            "properties": {
                "toolId": {
                    "type": "string",
                    "description": "The tool ID to filter the tools to retrieve the schema for.\n"
                },
                "toolset": {
                    "type": "string",
                    "description": "The resource name of the Toolset from which this tool is derived.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}`\n"
                }
            },
            "type": "object",
            "required": [
                "toolset"
            ]
        },
        "gcp:ces/GuardrailAction:GuardrailAction": {
            "properties": {
                "generativeAnswer": {
                    "$ref": "#/types/gcp:ces/GuardrailActionGenerativeAnswer:GuardrailActionGenerativeAnswer",
                    "description": "The agent will immediately respond with a generative answer.\nStructure is documented below.\n"
                },
                "respondImmediately": {
                    "$ref": "#/types/gcp:ces/GuardrailActionRespondImmediately:GuardrailActionRespondImmediately",
                    "description": "The agent will immediately respond with a preconfigured response.\nStructure is documented below.\n"
                },
                "transferAgent": {
                    "$ref": "#/types/gcp:ces/GuardrailActionTransferAgent:GuardrailActionTransferAgent",
                    "description": "The agent will transfer the conversation to a different agent.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/GuardrailActionGenerativeAnswer:GuardrailActionGenerativeAnswer": {
            "properties": {
                "prompt": {
                    "type": "string",
                    "description": "The prompt to use for the generative answer.\n"
                }
            },
            "type": "object",
            "required": [
                "prompt"
            ]
        },
        "gcp:ces/GuardrailActionRespondImmediately:GuardrailActionRespondImmediately": {
            "properties": {
                "responses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/GuardrailActionRespondImmediatelyResponse:GuardrailActionRespondImmediatelyResponse"
                    },
                    "description": "The canned responses for the agent to choose from. The response is chosen\nrandomly.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "responses"
            ]
        },
        "gcp:ces/GuardrailActionRespondImmediatelyResponse:GuardrailActionRespondImmediatelyResponse": {
            "properties": {
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the response is disabled. Disabled responses are not used by the\nagent.\n"
                },
                "text": {
                    "type": "string",
                    "description": "Text for the agent to respond with.\n"
                }
            },
            "type": "object",
            "required": [
                "text"
            ]
        },
        "gcp:ces/GuardrailActionTransferAgent:GuardrailActionTransferAgent": {
            "properties": {
                "agent": {
                    "type": "string",
                    "description": "The name of the agent to transfer the conversation to. The agent must be\nin the same app as the current agent.\nFormat:\n`projects/{project}/locations/{location}/apps/{app}/agents/{agent}`\n"
                }
            },
            "type": "object",
            "required": [
                "agent"
            ]
        },
        "gcp:ces/GuardrailCodeCallback:GuardrailCodeCallback": {
            "properties": {
                "afterAgentCallback": {
                    "$ref": "#/types/gcp:ces/GuardrailCodeCallbackAfterAgentCallback:GuardrailCodeCallbackAfterAgentCallback",
                    "description": "A callback defines the custom logic to be executed at various stages of\nagent interaction.\nStructure is documented below.\n"
                },
                "afterModelCallback": {
                    "$ref": "#/types/gcp:ces/GuardrailCodeCallbackAfterModelCallback:GuardrailCodeCallbackAfterModelCallback",
                    "description": "A callback defines the custom logic to be executed at various stages of\nagent interaction.\nStructure is documented below.\n"
                },
                "beforeAgentCallback": {
                    "$ref": "#/types/gcp:ces/GuardrailCodeCallbackBeforeAgentCallback:GuardrailCodeCallbackBeforeAgentCallback",
                    "description": "A callback defines the custom logic to be executed at various stages of\nagent interaction.\nStructure is documented below.\n"
                },
                "beforeModelCallback": {
                    "$ref": "#/types/gcp:ces/GuardrailCodeCallbackBeforeModelCallback:GuardrailCodeCallbackBeforeModelCallback",
                    "description": "A callback defines the custom logic to be executed at various stages of\nagent interaction.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/GuardrailCodeCallbackAfterAgentCallback:GuardrailCodeCallbackAfterAgentCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/GuardrailCodeCallbackAfterModelCallback:GuardrailCodeCallbackAfterModelCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/GuardrailCodeCallbackBeforeAgentCallback:GuardrailCodeCallbackBeforeAgentCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/GuardrailCodeCallbackBeforeModelCallback:GuardrailCodeCallbackBeforeModelCallback": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Human-readable description of the callback.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the callback is disabled. Disabled callbacks are ignored by the\nagent.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "The python code to execute for the callback.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/GuardrailContentFilter:GuardrailContentFilter": {
            "properties": {
                "bannedContents": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of banned phrases. Applies to both user inputs and agent responses.\n"
                },
                "bannedContentsInAgentResponses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of banned phrases. Applies only to agent responses.\n"
                },
                "bannedContentsInUserInputs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of banned phrases. Applies only to user inputs.\n"
                },
                "disregardDiacritics": {
                    "type": "boolean",
                    "description": "If true, diacritics are ignored during matching.\n"
                },
                "matchType": {
                    "type": "string",
                    "description": "Match type for the content filter.\nPossible values:\nSIMPLE_STRING_MATCH\nWORD_BOUNDARY_STRING_MATCH\nREGEXP_MATCH\n"
                }
            },
            "type": "object",
            "required": [
                "matchType"
            ]
        },
        "gcp:ces/GuardrailLlmPolicy:GuardrailLlmPolicy": {
            "properties": {
                "allowShortUtterance": {
                    "type": "boolean",
                    "description": "By default, the LLM policy check is bypassed for short utterances.\nEnabling this setting applies the policy check to all utterances,\nincluding those that would normally be skipped.\n"
                },
                "failOpen": {
                    "type": "boolean",
                    "description": "If an error occurs during the policy check, fail open and do not trigger\nthe guardrail.\n"
                },
                "maxConversationMessages": {
                    "type": "integer",
                    "description": "When checking this policy, consider the last 'n' messages in the\nconversation.\nWhen not set a default value of 10 will be used.\n"
                },
                "modelSettings": {
                    "$ref": "#/types/gcp:ces/GuardrailLlmPolicyModelSettings:GuardrailLlmPolicyModelSettings",
                    "description": "Model settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "policyScope": {
                    "type": "string",
                    "description": "Defines when to apply the policy check during the conversation. If set to\n`POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input.\nWhen applying the policy to the agent response, additional latency will\nbe introduced before the agent can respond.\nPossible values:\nUSER_QUERY\nAGENT_RESPONSE\nUSER_QUERY_AND_AGENT_RESPONSE\nPossible values are: `USER_QUERY`, `AGENT_RESPONSE`, `USER_QUERY_AND_AGENT_RESPONSE`.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "Policy prompt.\n"
                }
            },
            "type": "object",
            "required": [
                "policyScope",
                "prompt"
            ]
        },
        "gcp:ces/GuardrailLlmPolicyModelSettings:GuardrailLlmPolicyModelSettings": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "The LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "If set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/GuardrailLlmPromptSecurity:GuardrailLlmPromptSecurity": {
            "properties": {
                "customPolicy": {
                    "$ref": "#/types/gcp:ces/GuardrailLlmPromptSecurityCustomPolicy:GuardrailLlmPromptSecurityCustomPolicy",
                    "description": "Guardrail that blocks the conversation if the LLM response is considered\nviolating the policy based on the LLM classification.\nStructure is documented below.\n"
                },
                "defaultSettings": {
                    "$ref": "#/types/gcp:ces/GuardrailLlmPromptSecurityDefaultSettings:GuardrailLlmPromptSecurityDefaultSettings",
                    "description": "Configuration for default system security settings.\nStructure is documented below.\n"
                },
                "failOpen": {
                    "type": "boolean",
                    "description": "Determines the behavior when the guardrail encounters an LLM error.\n- If true: the guardrail is bypassed.\n- If false (default): the guardrail triggers/blocks.\nNote: If a custom policy is provided, this field is ignored in favor of\nthe policy's 'failOpen' configuration.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/GuardrailLlmPromptSecurityCustomPolicy:GuardrailLlmPromptSecurityCustomPolicy": {
            "properties": {
                "allowShortUtterance": {
                    "type": "boolean",
                    "description": "By default, the LLM policy check is bypassed for short utterances.\nEnabling this setting applies the policy check to all utterances,\nincluding those that would normally be skipped.\n"
                },
                "failOpen": {
                    "type": "boolean",
                    "description": "If an error occurs during the policy check, fail open and do not trigger\nthe guardrail.\n"
                },
                "maxConversationMessages": {
                    "type": "integer",
                    "description": "When checking this policy, consider the last 'n' messages in the\nconversation.\nWhen not set a default value of 10 will be used.\n"
                },
                "modelSettings": {
                    "$ref": "#/types/gcp:ces/GuardrailLlmPromptSecurityCustomPolicyModelSettings:GuardrailLlmPromptSecurityCustomPolicyModelSettings",
                    "description": "Model settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "policyScope": {
                    "type": "string",
                    "description": "Defines when to apply the policy check during the conversation. If set to\n`POLICY_SCOPE_UNSPECIFIED`, the policy will be applied to the user input.\nWhen applying the policy to the agent response, additional latency will\nbe introduced before the agent can respond.\nPossible values:\nUSER_QUERY\nAGENT_RESPONSE\nUSER_QUERY_AND_AGENT_RESPONSE\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "Policy prompt.\n"
                }
            },
            "type": "object",
            "required": [
                "policyScope",
                "prompt"
            ]
        },
        "gcp:ces/GuardrailLlmPromptSecurityCustomPolicyModelSettings:GuardrailLlmPromptSecurityCustomPolicyModelSettings": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "The LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "If set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/GuardrailLlmPromptSecurityDefaultSettings:GuardrailLlmPromptSecurityDefaultSettings": {
            "properties": {
                "defaultPromptTemplate": {
                    "type": "string",
                    "description": "(Output)\nThe default prompt template used by the system.\nThis field is for display purposes to show the user what prompt\nthe system uses by default. It is OUTPUT_ONLY.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "defaultPromptTemplate"
                    ]
                }
            }
        },
        "gcp:ces/GuardrailModelSafety:GuardrailModelSafety": {
            "properties": {
                "safetySettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/GuardrailModelSafetySafetySetting:GuardrailModelSafetySafetySetting"
                    },
                    "description": "List of safety settings.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "safetySettings"
            ]
        },
        "gcp:ces/GuardrailModelSafetySafetySetting:GuardrailModelSafetySafetySetting": {
            "properties": {
                "category": {
                    "type": "string",
                    "description": "The harm category.\nPossible values:\nHARM_CATEGORY_HATE_SPEECH\nHARM_CATEGORY_DANGEROUS_CONTENT\nHARM_CATEGORY_HARASSMENT\nHARM_CATEGORY_SEXUALLY_EXPLICIT\nPossible values are: `HARM_CATEGORY_HATE_SPEECH`, `HARM_CATEGORY_DANGEROUS_CONTENT`, `HARM_CATEGORY_HARASSMENT`, `HARM_CATEGORY_SEXUALLY_EXPLICIT`.\n"
                },
                "threshold": {
                    "type": "string",
                    "description": "The harm block threshold.\nPossible values:\nBLOCK_LOW_AND_ABOVE\nBLOCK_MEDIUM_AND_ABOVE\nBLOCK_ONLY_HIGH\nBLOCK_NONE\nOFF\nPossible values are: `BLOCK_LOW_AND_ABOVE`, `BLOCK_MEDIUM_AND_ABOVE`, `BLOCK_ONLY_HIGH`, `BLOCK_NONE`, `OFF`.\n"
                }
            },
            "type": "object",
            "required": [
                "category",
                "threshold"
            ]
        },
        "gcp:ces/SecuritySettingsEndpointControlPolicy:SecuritySettingsEndpointControlPolicy": {
            "properties": {
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. The allowed HTTP(s) origins that tools in the App are able to directly call.\n"
                },
                "enforcementScope": {
                    "type": "string",
                    "description": "Optional. The scope in which this policy's allowedOrigins list is enforced.\nPossible values are: `ENFORCEMENT_SCOPE_UNSPECIFIED`, `VPCSC_ONLY`, `ALWAYS`.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolAgentTool:ToolAgentTool": {
            "properties": {
                "agent": {
                    "type": "string",
                    "description": "Optional. The resource name of the agent that is the entry point of the tool.\nFormat: projects/{project}/locations/{location}/agents/{agent}\n"
                },
                "description": {
                    "type": "string",
                    "description": "Optional. Description of the tool's purpose.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Required. The name of the agent tool.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:ces/ToolClientFunction:ToolClientFunction": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "The function description.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The function name.\n"
                },
                "parameters": {
                    "$ref": "#/types/gcp:ces/ToolClientFunctionParameters:ToolClientFunctionParameters",
                    "description": "Represents a select subset of an OpenAPI 3.0 schema object.\nStructure is documented below.\n"
                },
                "response": {
                    "$ref": "#/types/gcp:ces/ToolClientFunctionResponse:ToolClientFunctionResponse",
                    "description": "Represents a select subset of an OpenAPI 3.0 schema object.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:ces/ToolClientFunctionParameters:ToolClientFunctionParameters": {
            "properties": {
                "additionalProperties": {
                    "type": "string",
                    "description": "Defines the schema for additional properties allowed in an object.\nThe value must be a valid JSON string representing the Schema object.\n(Note: OpenAPI also allows a boolean, this definition expects a Schema JSON).\n"
                },
                "anyOf": {
                    "type": "string",
                    "description": "The instance value should be valid against at least one of the schemas in this list.\n"
                },
                "default": {
                    "type": "string",
                    "description": "Default value of the data. Represents a dynamically typed value\nwhich can be either null, a number, a string, a boolean, a struct,\nor a list of values. The provided default value must be compatible\nwith the defined 'type' and other schema constraints.\n"
                },
                "defs": {
                    "type": "string",
                    "description": "A map of definitions for use by ref. Only allowed at the root of the schema.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the data.\n"
                },
                "enums": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Possible values of the element of primitive type with enum format.\nExamples:\n1. We can define direction as :\n{type:STRING, format:enum, enum:[\"EAST\", NORTH\", \"SOUTH\", \"WEST\"]}\n2. We can define apartment number as :\n{type:INTEGER, format:enum, enum:[\"101\", \"201\", \"301\"]}\n"
                },
                "items": {
                    "type": "string",
                    "description": "Schema of the elements of Type.ARRAY.\n"
                },
                "maxItems": {
                    "type": "integer",
                    "description": "Maximum number of the elements for Type.ARRAY. (int64 format)\n"
                },
                "maximum": {
                    "type": "number",
                    "description": "Maximum value for Type.INTEGER and Type.NUMBER.\n"
                },
                "minItems": {
                    "type": "integer",
                    "description": "Minimum number of the elements for Type.ARRAY. (int64 format)\n"
                },
                "minimum": {
                    "type": "number",
                    "description": "Minimum value for Type.INTEGER and Type.NUMBER.\n"
                },
                "nullable": {
                    "type": "boolean",
                    "description": "Indicates if the value may be null.\n"
                },
                "prefixItems": {
                    "type": "string",
                    "description": "Schemas of initial elements of Type.ARRAY.\n"
                },
                "properties": {
                    "type": "string",
                    "description": "Properties of Type.OBJECT.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "Allows indirect references between schema nodes. The value should be a\nvalid reference to a child of the root \u003cspan pulumi-lang-nodejs=\"`defs`\" pulumi-lang-dotnet=\"`Defs`\" pulumi-lang-go=\"`defs`\" pulumi-lang-python=\"`defs`\" pulumi-lang-yaml=\"`defs`\" pulumi-lang-java=\"`defs`\" pulumi-lang-hcl=\"`defs`\"\u003e`defs`\u003c/span\u003e.\nFor example, the following schema defines a reference to a schema node\nnamed \"Pet\":\ntype: object\nproperties:\npet:\nref: #/defs/Pet\ndefs:\nPet:\ntype: object\nproperties:\nname:\ntype: string\nThe value of the \"pet\" property is a reference to the schema node\nnamed \"Pet\".\nSee details in\nhttps://json-schema.org/understanding-json-schema/structuring.\n"
                },
                "requireds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required properties of Type.OBJECT.\n"
                },
                "title": {
                    "type": "string",
                    "description": "The title of the schema.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the data.\nPossible values:\nSTRING\nINTEGER\nNUMBER\nBOOLEAN\nOBJECT\nARRAY\n"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "description": "Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:ces/ToolClientFunctionResponse:ToolClientFunctionResponse": {
            "properties": {
                "additionalProperties": {
                    "type": "string",
                    "description": "Defines the schema for additional properties allowed in an object.\nThe value must be a valid JSON string representing the Schema object.\n(Note: OpenAPI also allows a boolean, this definition expects a Schema JSON).\n"
                },
                "anyOf": {
                    "type": "string",
                    "description": "The instance value should be valid against at least one of the schemas in this list.\n"
                },
                "default": {
                    "type": "string",
                    "description": "Default value of the data. Represents a dynamically typed value\nwhich can be either null, a number, a string, a boolean, a struct,\nor a list of values. The provided default value must be compatible\nwith the defined 'type' and other schema constraints.\n"
                },
                "defs": {
                    "type": "string",
                    "description": "A map of definitions for use by ref. Only allowed at the root of the schema.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the data.\n"
                },
                "enums": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Possible values of the element of primitive type with enum format.\nExamples:\n1. We can define direction as :\n{type:STRING, format:enum, enum:[\"EAST\", NORTH\", \"SOUTH\", \"WEST\"]}\n2. We can define apartment number as :\n{type:INTEGER, format:enum, enum:[\"101\", \"201\", \"301\"]}\n"
                },
                "items": {
                    "type": "string",
                    "description": "Schema of the elements of Type.ARRAY.\n"
                },
                "maxItems": {
                    "type": "integer",
                    "description": "Maximum number of the elements for Type.ARRAY. (int64 format)\n"
                },
                "maximum": {
                    "type": "number",
                    "description": "Maximum value for Type.INTEGER and Type.NUMBER.\n"
                },
                "minItems": {
                    "type": "integer",
                    "description": "Minimum number of the elements for Type.ARRAY. (int64 format)\n"
                },
                "minimum": {
                    "type": "number",
                    "description": "Minimum value for Type.INTEGER and Type.NUMBER.\n"
                },
                "nullable": {
                    "type": "boolean",
                    "description": "Indicates if the value may be null.\n"
                },
                "prefixItems": {
                    "type": "string",
                    "description": "Schemas of initial elements of Type.ARRAY.\n"
                },
                "properties": {
                    "type": "string",
                    "description": "Properties of Type.OBJECT.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "Allows indirect references between schema nodes. The value should be a\nvalid reference to a child of the root \u003cspan pulumi-lang-nodejs=\"`defs`\" pulumi-lang-dotnet=\"`Defs`\" pulumi-lang-go=\"`defs`\" pulumi-lang-python=\"`defs`\" pulumi-lang-yaml=\"`defs`\" pulumi-lang-java=\"`defs`\" pulumi-lang-hcl=\"`defs`\"\u003e`defs`\u003c/span\u003e.\nFor example, the following schema defines a reference to a schema node\nnamed \"Pet\":\ntype: object\nproperties:\npet:\nref: #/defs/Pet\ndefs:\nPet:\ntype: object\nproperties:\nname:\ntype: string\nThe value of the \"pet\" property is a reference to the schema node\nnamed \"Pet\".\nSee details in\nhttps://json-schema.org/understanding-json-schema/structuring.\n"
                },
                "requireds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required properties of Type.OBJECT.\n"
                },
                "title": {
                    "type": "string",
                    "description": "The title of the schema.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the data.\nPossible values:\nSTRING\nINTEGER\nNUMBER\nBOOLEAN\nOBJECT\nARRAY\n"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "description": "Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:ces/ToolConnectorTool:ToolConnectorTool": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolConnectorToolAction:ToolConnectorToolAction"
                    },
                    "description": "(Output)\nAction for the tool to use.\nStructure is documented below.\n"
                },
                "authConfig": {
                    "type": "string",
                    "description": "(Output)\nConfigures how authentication is handled in Integration Connectors. By default, an admin authentication is passed in the Integration Connectors API requests. You can override it with a different end-user authentication config. Note: The Connection must have authentication override enabled in order to specify an EUC configuration here - otherwise, the ConnectorTool creation will fail. See https://cloud.google.com/application-integration/docs/configure-connectors-task#configure-authentication-override for details. Represents a JSON object.\n"
                },
                "connection": {
                    "type": "string",
                    "description": "(Output)\nThe full resource name of the referenced Integration Connectors Connection. Format: projects/{project}/locations/{location}/connections/{connection}\n"
                },
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the system tool.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe name of the system tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "actions",
                        "authConfig",
                        "connection",
                        "description",
                        "name"
                    ]
                }
            }
        },
        "gcp:ces/ToolConnectorToolAction:ToolConnectorToolAction": {
            "properties": {
                "connectionActionId": {
                    "type": "string",
                    "description": "(Output)\nID of a Connection action for the tool to use.\n"
                },
                "entityOperations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolConnectorToolActionEntityOperation:ToolConnectorToolActionEntityOperation"
                    },
                    "description": "(Output)\nEntity operation configuration for the tool to use.\nStructure is documented below.\n"
                },
                "inputFields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nEntity fields to use as inputs for the operation.\n"
                },
                "outputFields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nEntity fields to return from the operation.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "connectionActionId",
                        "entityOperations",
                        "inputFields",
                        "outputFields"
                    ]
                }
            }
        },
        "gcp:ces/ToolConnectorToolActionEntityOperation:ToolConnectorToolActionEntityOperation": {
            "properties": {
                "entityId": {
                    "type": "string",
                    "description": "(Output)\nID of the entity.\n"
                },
                "operation": {
                    "type": "string",
                    "description": "(Output)\nOperation to perform on the entity.\nPossible values:\nOPERATION_TYPE_UNSPECIFIED\nLIST\nGET\nCREATE\nUPDATE\nDELETE\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "entityId",
                        "operation"
                    ]
                }
            }
        },
        "gcp:ces/ToolDataStoreTool:ToolDataStoreTool": {
            "properties": {
                "boostSpecs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolDataStoreToolBoostSpec:ToolDataStoreToolBoostSpec"
                    },
                    "description": "Boost specification to boost certain documents.\nStructure is documented below.\n"
                },
                "dataStoreSource": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolDataStoreSource:ToolDataStoreToolDataStoreSource",
                    "description": "Optional. Search within a single specific DataStore.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The tool description.\n"
                },
                "engineSource": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolEngineSource:ToolDataStoreToolEngineSource",
                    "description": "Configuration for searching within an Engine, potentially targeting\nspecific DataStores.\nStructure is documented below.\n"
                },
                "filterParameterBehavior": {
                    "type": "string",
                    "description": "Optional. The filter parameter behavior.\nPossible values:\nFILTER_PARAMETER_BEHAVIOR_UNSPECIFIED\nALWAYS_INCLUDE\nNEVER_INCLUDE\nPossible values are: `FILTER_PARAMETER_BEHAVIOR_UNSPECIFIED`, `ALWAYS_INCLUDE`, `NEVER_INCLUDE`.\n"
                },
                "maxResults": {
                    "type": "integer",
                    "description": "(Optional, Deprecated)\nNumber of search results to return per query.\nThe default value is 10. The maximum allowed value is 10.\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`maxResults`\" pulumi-lang-dotnet=\"`MaxResults`\" pulumi-lang-go=\"`maxResults`\" pulumi-lang-python=\"`max_results`\" pulumi-lang-yaml=\"`maxResults`\" pulumi-lang-java=\"`maxResults`\" pulumi-lang-hcl=\"`max_results`\"\u003e`maxResults`\u003c/span\u003e is deprecated and will be removed in a future release.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`maxResults`\" pulumi-lang-dotnet=\"`MaxResults`\" pulumi-lang-go=\"`maxResults`\" pulumi-lang-python=\"`max_results`\" pulumi-lang-yaml=\"`maxResults`\" pulumi-lang-java=\"`maxResults`\" pulumi-lang-hcl=\"`max_results`\"\u003e`maxResults`\u003c/span\u003e is deprecated and will be removed in a future release."
                },
                "modalityConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolDataStoreToolModalityConfig:ToolDataStoreToolModalityConfig"
                    },
                    "description": "The modality configs for the data store.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The data store tool name.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:ces/ToolDataStoreToolBoostSpec:ToolDataStoreToolBoostSpec": {
            "properties": {
                "dataStores": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Data Store where the boosting configuration is applied. Full resource\nname of DataStore, such as\nprojects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}.\n"
                },
                "specs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolDataStoreToolBoostSpecSpec:ToolDataStoreToolBoostSpecSpec"
                    },
                    "description": "A list of boosting specifications.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "dataStores",
                "specs"
            ]
        },
        "gcp:ces/ToolDataStoreToolBoostSpecSpec:ToolDataStoreToolBoostSpecSpec": {
            "properties": {
                "conditionBoostSpecs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolDataStoreToolBoostSpecSpecConditionBoostSpec:ToolDataStoreToolBoostSpecSpecConditionBoostSpec"
                    },
                    "description": "A list of boosting specifications.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "conditionBoostSpecs"
            ]
        },
        "gcp:ces/ToolDataStoreToolBoostSpecSpecConditionBoostSpec:ToolDataStoreToolBoostSpecSpecConditionBoostSpec": {
            "properties": {
                "boost": {
                    "type": "number",
                    "description": "Strength of the boost, which should be in [-1, 1]. Negative boost means\ndemotion. Default is 0.0.\nSetting to 1.0 gives the suggestions a big promotion. However, it does\nnot necessarily mean that the top result will be a boosted suggestion.\nSetting to -1.0 gives the suggestions a big demotion. However, other\nsuggestions that are relevant might still be shown.\nSetting to 0.0 means no boost applied. The boosting condition is\nignored.\n"
                },
                "boostControlSpec": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpec:ToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpec",
                    "description": "Specification for custom ranking based on customer specified attribute\nvalue. It provides more controls for customized ranking than the simple\n(condition, boost) combination above.\nStructure is documented below.\n"
                },
                "condition": {
                    "type": "string",
                    "description": "An expression which specifies a boost condition. The syntax is the same\nas filter expression syntax. Currently, the only supported condition is\na list of BCP-47 lang codes.\nExample: To boost suggestions in languages en or fr:\n(lang_code: ANY(\"en\", \"fr\"))\n"
                }
            },
            "type": "object",
            "required": [
                "condition"
            ]
        },
        "gcp:ces/ToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpec:ToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpec": {
            "properties": {
                "attributeType": {
                    "type": "string",
                    "description": "The attribute type to be used to determine the boost amount. The\nattribute value can be derived from the field value of the specified\nfield_name. In the case of numerical it is straightforward i.e.\u003cspan pulumi-lang-nodejs=\"\nattributeValue \" pulumi-lang-dotnet=\"\nAttributeValue \" pulumi-lang-go=\"\nattributeValue \" pulumi-lang-python=\"\nattribute_value \" pulumi-lang-yaml=\"\nattributeValue \" pulumi-lang-java=\"\nattributeValue \" pulumi-lang-hcl=\"\nattribute_value \"\u003e\nattributeValue \u003c/span\u003e= numerical_field_value. In the case of freshness\nhowever,\u003cspan pulumi-lang-nodejs=\" attributeValue \" pulumi-lang-dotnet=\" AttributeValue \" pulumi-lang-go=\" attributeValue \" pulumi-lang-python=\" attribute_value \" pulumi-lang-yaml=\" attributeValue \" pulumi-lang-java=\" attributeValue \" pulumi-lang-hcl=\" attribute_value \"\u003e attributeValue \u003c/span\u003e= (time.now() - datetime_field_value).\nPossible values:\nNUMERICAL\nFRESHNESS\n"
                },
                "controlPoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpecControlPoint:ToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpecControlPoint"
                    },
                    "description": "The control points used to define the curve. The monotonic function\n(defined through the\u003cspan pulumi-lang-nodejs=\" interpolationType \" pulumi-lang-dotnet=\" InterpolationType \" pulumi-lang-go=\" interpolationType \" pulumi-lang-python=\" interpolation_type \" pulumi-lang-yaml=\" interpolationType \" pulumi-lang-java=\" interpolationType \" pulumi-lang-hcl=\" interpolation_type \"\u003e interpolationType \u003c/span\u003eabove) passes through the\ncontrol points listed here.\nStructure is documented below.\n"
                },
                "fieldName": {
                    "type": "string",
                    "description": "The name of the field whose value will be used to determine the\nboost amount.\n"
                },
                "interpolationType": {
                    "type": "string",
                    "description": "The interpolation type to be applied to connect the control points\nlisted below.\nPossible values:\nLINEAR\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpecControlPoint:ToolDataStoreToolBoostSpecSpecConditionBoostSpecBoostControlSpecControlPoint": {
            "properties": {
                "attributeValue": {
                    "type": "string",
                    "description": "Can be one of:\n1. The numerical field value.\n2. The duration spec for freshness:\nThe value must be formatted as an XSD `dayTimeDuration` value (a\nrestricted subset of an ISO 8601 duration value). The pattern for\nthis is: `nDnM]`.\n"
                },
                "boostAmount": {
                    "type": "number",
                    "description": "The value between -1 to 1 by which to boost the score if the\u003cspan pulumi-lang-nodejs=\"\nattributeValue \" pulumi-lang-dotnet=\"\nAttributeValue \" pulumi-lang-go=\"\nattributeValue \" pulumi-lang-python=\"\nattribute_value \" pulumi-lang-yaml=\"\nattributeValue \" pulumi-lang-java=\"\nattributeValue \" pulumi-lang-hcl=\"\nattribute_value \"\u003e\nattributeValue \u003c/span\u003eevaluates to the value specified above.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolDataStoreToolDataStoreSource:ToolDataStoreToolDataStoreSource": {
            "properties": {
                "dataStore": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolDataStoreSourceDataStore:ToolDataStoreToolDataStoreSourceDataStore",
                    "description": "Optional. The data store.\nStructure is documented below.\n"
                },
                "filter": {
                    "type": "string",
                    "description": "Optional. Filter specification for the DataStore.\nSee: https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolDataStoreToolDataStoreSourceDataStore:ToolDataStoreToolDataStoreSourceDataStore": {
            "properties": {
                "connectorConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolDataStoreToolDataStoreSourceDataStoreConnectorConfig:ToolDataStoreToolDataStoreSourceDataStoreConnectorConfig"
                    },
                    "description": "(Output)\nThe connector config for the data store connection.\nStructure is documented below.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the data store was created.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nThe display name of the data store.\n"
                },
                "documentProcessingMode": {
                    "type": "string",
                    "description": "(Output)\nThe document processing mode for the data store connection.\nOnly set for PUBLIC_WEB and UNSTRUCTURED data stores.\nPossible values:\nDOCUMENTS\nCHUNKS\n"
                },
                "name": {
                    "type": "string",
                    "description": "Full resource name of the DataStore.\nFormat:\n`projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe type of the data store. This field is readonly and populated by the\nserver.\nPossible values:\nPUBLIC_WEB\nUNSTRUCTURED\nFAQ\nCONNECTOR\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-dotnet=\"\"NestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-go=\"\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-python=\"\"nested_data_store_tool_engine_source_data_store_sources_data_store_connector_config\"\" pulumi-lang-yaml=\"\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-java=\"\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-hcl=\"\"nested_data_store_tool_engine_source_data_store_sources_data_store_connector_config\"\"\u003e\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`connectorConfig`\" pulumi-lang-dotnet=\"`ConnectorConfig`\" pulumi-lang-go=\"`connectorConfig`\" pulumi-lang-python=\"`connector_config`\" pulumi-lang-yaml=\"`connectorConfig`\" pulumi-lang-java=\"`connectorConfig`\" pulumi-lang-hcl=\"`connector_config`\"\u003e`connectorConfig`\u003c/span\u003e block contains:\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "connectorConfigs",
                        "createTime",
                        "displayName",
                        "documentProcessingMode",
                        "name",
                        "type"
                    ]
                }
            }
        },
        "gcp:ces/ToolDataStoreToolDataStoreSourceDataStoreConnectorConfig:ToolDataStoreToolDataStoreSourceDataStoreConnectorConfig": {
            "properties": {
                "collection": {
                    "type": "string",
                    "description": "Resource name of the collection the data store belongs to.\n"
                },
                "collectionDisplayName": {
                    "type": "string",
                    "description": "Display name of the collection the data store belongs to.\n"
                },
                "dataSource": {
                    "type": "string",
                    "description": "The name of the data source.\nExample: 'salesforce', 'jira', 'confluence', 'bigquery'.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "collection",
                        "collectionDisplayName",
                        "dataSource"
                    ]
                }
            }
        },
        "gcp:ces/ToolDataStoreToolEngineSource:ToolDataStoreToolEngineSource": {
            "properties": {
                "dataStoreSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolDataStoreToolEngineSourceDataStoreSource:ToolDataStoreToolEngineSourceDataStoreSource"
                    },
                    "description": "Use to target specific DataStores within the Engine.\nIf empty, the search applies to all DataStores associated with the\nEngine.\nStructure is documented below.\n"
                },
                "engine": {
                    "type": "string",
                    "description": "Full resource name of the Engine.\nFormat:\n`projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`\n"
                },
                "filter": {
                    "type": "string",
                    "description": "A filter applied to the search across the Engine. Not relevant and not\nused if 'data_store_sources' is provided.\nSee:\nhttps://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata\n"
                }
            },
            "type": "object",
            "required": [
                "engine"
            ]
        },
        "gcp:ces/ToolDataStoreToolEngineSourceDataStoreSource:ToolDataStoreToolEngineSourceDataStoreSource": {
            "properties": {
                "dataStore": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolEngineSourceDataStoreSourceDataStore:ToolDataStoreToolEngineSourceDataStoreSourceDataStore",
                    "description": "A DataStore resource in Vertex AI Search.\nStructure is documented below.\n"
                },
                "filter": {
                    "type": "string",
                    "description": "Filter specification for the DataStore.\nSee:\nhttps://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolDataStoreToolEngineSourceDataStoreSourceDataStore:ToolDataStoreToolEngineSourceDataStoreSourceDataStore": {
            "properties": {
                "connectorConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolDataStoreToolEngineSourceDataStoreSourceDataStoreConnectorConfig:ToolDataStoreToolEngineSourceDataStoreSourceDataStoreConnectorConfig"
                    },
                    "description": "(Output)\nThe connector config for the data store connection.\nStructure is documented below.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTimestamp when the data store was created.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nThe display name of the data store.\n"
                },
                "documentProcessingMode": {
                    "type": "string",
                    "description": "(Output)\nThe document processing mode for the data store connection.\nOnly set for PUBLIC_WEB and UNSTRUCTURED data stores.\nPossible values:\nDOCUMENTS\nCHUNKS\n"
                },
                "name": {
                    "type": "string",
                    "description": "Full resource name of the DataStore.\nFormat:\n`projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe type of the data store. This field is readonly and populated by the\nserver.\nPossible values:\nPUBLIC_WEB\nUNSTRUCTURED\nFAQ\nCONNECTOR\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-dotnet=\"\"NestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-go=\"\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-python=\"\"nested_data_store_tool_engine_source_data_store_sources_data_store_connector_config\"\" pulumi-lang-yaml=\"\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-java=\"\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\" pulumi-lang-hcl=\"\"nested_data_store_tool_engine_source_data_store_sources_data_store_connector_config\"\"\u003e\"nestedDataStoreToolEngineSourceDataStoreSourcesDataStoreConnectorConfig\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`connectorConfig`\" pulumi-lang-dotnet=\"`ConnectorConfig`\" pulumi-lang-go=\"`connectorConfig`\" pulumi-lang-python=\"`connector_config`\" pulumi-lang-yaml=\"`connectorConfig`\" pulumi-lang-java=\"`connectorConfig`\" pulumi-lang-hcl=\"`connector_config`\"\u003e`connectorConfig`\u003c/span\u003e block contains:\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "connectorConfigs",
                        "createTime",
                        "displayName",
                        "documentProcessingMode",
                        "name",
                        "type"
                    ]
                }
            }
        },
        "gcp:ces/ToolDataStoreToolEngineSourceDataStoreSourceDataStoreConnectorConfig:ToolDataStoreToolEngineSourceDataStoreSourceDataStoreConnectorConfig": {
            "properties": {
                "collection": {
                    "type": "string",
                    "description": "Resource name of the collection the data store belongs to.\n"
                },
                "collectionDisplayName": {
                    "type": "string",
                    "description": "Display name of the collection the data store belongs to.\n"
                },
                "dataSource": {
                    "type": "string",
                    "description": "The name of the data source.\nExample: 'salesforce', 'jira', 'confluence', 'bigquery'.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "collection",
                        "collectionDisplayName",
                        "dataSource"
                    ]
                }
            }
        },
        "gcp:ces/ToolDataStoreToolModalityConfig:ToolDataStoreToolModalityConfig": {
            "properties": {
                "groundingConfig": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolModalityConfigGroundingConfig:ToolDataStoreToolModalityConfigGroundingConfig",
                    "description": "Grounding configuration.\nStructure is documented below.\n"
                },
                "modalityType": {
                    "type": "string",
                    "description": "The modality type.\nPossible values:\nTEXT\nAUDIO\n"
                },
                "rewriterConfig": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolModalityConfigRewriterConfig:ToolDataStoreToolModalityConfigRewriterConfig",
                    "description": "Rewriter configuration.\nStructure is documented below.\n"
                },
                "summarizationConfig": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolModalityConfigSummarizationConfig:ToolDataStoreToolModalityConfigSummarizationConfig",
                    "description": "Summarization configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "modalityType"
            ]
        },
        "gcp:ces/ToolDataStoreToolModalityConfigGroundingConfig:ToolDataStoreToolModalityConfigGroundingConfig": {
            "properties": {
                "disabled": {
                    "type": "boolean",
                    "description": "Whether grounding is disabled.\n"
                },
                "groundingLevel": {
                    "type": "number",
                    "description": "The groundedness threshold of the answer based on the retrieved sources.\nThe value has a configurable range of [1, 5]. The level is used to\nthreshold the groundedness of the answer, meaning that all responses with\na groundedness score below the threshold will fall back to returning\nrelevant snippets only.\nFor example, a level of 3 means that the groundedness score must be\n3 or higher for the response to be returned.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolDataStoreToolModalityConfigRewriterConfig:ToolDataStoreToolModalityConfigRewriterConfig": {
            "properties": {
                "disabled": {
                    "type": "boolean",
                    "description": "Whether the rewriter is disabled.\n"
                },
                "modelSettings": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolModalityConfigRewriterConfigModelSettings:ToolDataStoreToolModalityConfigRewriterConfigModelSettings",
                    "description": "Model settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "The prompt definition. If not set, default prompt will be used.\n"
                }
            },
            "type": "object",
            "required": [
                "modelSettings"
            ]
        },
        "gcp:ces/ToolDataStoreToolModalityConfigRewriterConfigModelSettings:ToolDataStoreToolModalityConfigRewriterConfigModelSettings": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "The LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "If set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolDataStoreToolModalityConfigSummarizationConfig:ToolDataStoreToolModalityConfigSummarizationConfig": {
            "properties": {
                "disabled": {
                    "type": "boolean",
                    "description": "Whether summarization is disabled.\n"
                },
                "modelSettings": {
                    "$ref": "#/types/gcp:ces/ToolDataStoreToolModalityConfigSummarizationConfigModelSettings:ToolDataStoreToolModalityConfigSummarizationConfigModelSettings",
                    "description": "Model settings contains various configurations for the LLM model.\nStructure is documented below.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "The prompt definition. If not set, default prompt will be used.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolDataStoreToolModalityConfigSummarizationConfigModelSettings:ToolDataStoreToolModalityConfigSummarizationConfigModelSettings": {
            "properties": {
                "model": {
                    "type": "string",
                    "description": "The LLM model that the agent should use.\nIf not set, the agent will inherit the model from its parent agent.\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "If set, this temperature will be used for the LLM model. Temperature\ncontrols the randomness of the model's responses. Lower temperatures\nproduce responses that are more predictable. Higher temperatures produce\nresponses that are more creative.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolFileSearchTool:ToolFileSearchTool": {
            "properties": {
                "corpusType": {
                    "type": "string",
                    "description": "Optional. The type of the corpus. Default is FULLY_MANAGED.\nPossible values:\nCORPUS_TYPE_UNSPECIFIED\nUSER_OWNED\nFULLY_MANAGED\nPossible values are: `CORPUS_TYPE_UNSPECIFIED`, `USER_OWNED`, `FULLY_MANAGED`.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Optional. The tool description.\n"
                },
                "fileCorpus": {
                    "type": "string",
                    "description": "Optional. The corpus where files are stored.\nFormat: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}\n"
                },
                "name": {
                    "type": "string",
                    "description": "Required. The tool name.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:ces/ToolGoogleSearchTool:ToolGoogleSearchTool": {
            "properties": {
                "contextUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Content will be fetched directly from these URLs for context and grounding.\nMore details: https://cloud.google.com/vertex-ai/generative-ai/docs/url-context.\nExample: \"https://example.com/path.html\". A maximum of 20 URLs are allowed.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the tool's purpose.\n"
                },
                "excludeDomains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of domains to be excluded from the search results.\nExample: \"example.com\".\nA maximum of 2000 domains can be excluded.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the tool.\n"
                },
                "preferredDomains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies domain names to guide the search.\nThe model will be instructed to prioritize these domains\nwhen formulating queries for google search.\nThis is a best-effort hint and these domains may or may\nnot be exclusively reflected in the final search results.\nExample: \"example.com\", \"another.site\".\nA maximum of 20 domains can be specified.\n"
                },
                "promptConfig": {
                    "$ref": "#/types/gcp:ces/ToolGoogleSearchToolPromptConfig:ToolGoogleSearchToolPromptConfig",
                    "description": "Optional. Prompt instructions passed to planner on how the search results should be\nprocessed for text and voice.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:ces/ToolGoogleSearchToolPromptConfig:ToolGoogleSearchToolPromptConfig": {
            "properties": {
                "textPrompt": {
                    "type": "string",
                    "description": "Optional. Defines the prompt used for the system instructions when interacting with the\nagent in chat conversations. If not set, default prompt will be used.\n"
                },
                "voicePrompt": {
                    "type": "string",
                    "description": "Optional. Defines the prompt used for the system instructions when interacting with the\nagent in voice conversations. If not set, default prompt will be used.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolMcpTool:ToolMcpTool": {
            "properties": {
                "apiAuthentications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolApiAuthentication:ToolMcpToolApiAuthentication"
                    },
                    "description": "(Output)\nAuthentication information required for API calls.\nStructure is documented below.\n"
                },
                "customHeaders": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe custom headers to send in the request to the MCP server. The values must be in the format `$context.variables.\u003cname_of_variable\u003e` and can be set in the session variables.\n"
                },
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the system tool.\n"
                },
                "inputSchema": {
                    "type": "string",
                    "description": "(Output)\nThe schema of the input arguments of the MCP tool. Represents a JSON object.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe name of the system tool.\n"
                },
                "nameOverride": {
                    "type": "string",
                    "description": "(Output)\nThe name override of the MCP tool. This is populated if the name was overridden by a Toolset override.\n"
                },
                "outputSchema": {
                    "type": "string",
                    "description": "(Output)\nThe schema of the output arguments of the MCP tool. Represents a JSON object.\n"
                },
                "serverAddress": {
                    "type": "string",
                    "description": "(Output)\nThe server address of the MCP server, e.g., \"https://example.com/mcp/\". If the server is built with the MCP SDK, the url should be suffixed with \"/mcp/\". Only Streamable HTTP transport based servers are supported. This is the same as the serverAddress in the McpToolset.\n"
                },
                "serviceDirectoryConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolServiceDirectoryConfig:ToolMcpToolServiceDirectoryConfig"
                    },
                    "description": "(Output)\nConfiguration for tools using Service Directory.\nStructure is documented below.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nThe state of the MCP tool.\nPossible values:\nSTATE_UNSPECIFIED\nACTIVE\nINACTIVE\nSTALE\n"
                },
                "tlsConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolTlsConfig:ToolMcpToolTlsConfig"
                    },
                    "description": "(Output)\nThe TLS configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiAuthentications",
                        "customHeaders",
                        "description",
                        "inputSchema",
                        "name",
                        "nameOverride",
                        "outputSchema",
                        "serverAddress",
                        "serviceDirectoryConfigs",
                        "state",
                        "tlsConfigs"
                    ]
                }
            }
        },
        "gcp:ces/ToolMcpToolApiAuthentication:ToolMcpToolApiAuthentication": {
            "properties": {
                "apiKeyConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolApiAuthenticationApiKeyConfig:ToolMcpToolApiAuthenticationApiKeyConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with API key.\nStructure is documented below.\n"
                },
                "bearerTokenConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolApiAuthenticationBearerTokenConfig:ToolMcpToolApiAuthenticationBearerTokenConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with a bearer token.\nStructure is documented below.\n"
                },
                "oauthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolApiAuthenticationOauthConfig:ToolMcpToolApiAuthenticationOauthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with OAuth.\nStructure is documented below.\n"
                },
                "serviceAccountAuthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolApiAuthenticationServiceAccountAuthConfig:ToolMcpToolApiAuthenticationServiceAccountAuthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication using a custom service account.\nStructure is documented below.\n"
                },
                "serviceAgentIdTokenAuthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolApiAuthenticationServiceAgentIdTokenAuthConfig:ToolMcpToolApiAuthenticationServiceAgentIdTokenAuthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with [ID\ntoken](https://cloud.google.com/docs/authentication/token-types#id) generated\nfrom service agent.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiKeyConfigs",
                        "bearerTokenConfigs",
                        "oauthConfigs",
                        "serviceAccountAuthConfigs",
                        "serviceAgentIdTokenAuthConfigs"
                    ]
                }
            }
        },
        "gcp:ces/ToolMcpToolApiAuthenticationApiKeyConfig:ToolMcpToolApiAuthenticationApiKeyConfig": {
            "properties": {
                "apiKeySecretVersion": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource storing the API key.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-\u003cPROJECT-NUMBER\u003e@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "keyName": {
                    "type": "string",
                    "description": "(Output)\nThe parameter name or the header name of the API key.\nE.g., If the API request is \"https://example.com/act?X-Api-Key=\", \"X-Api-Key\" would be the parameter name.\n"
                },
                "requestLocation": {
                    "type": "string",
                    "description": "(Output)\nKey location in the request.\nPossible values:\nHEADER\nQUERY_STRING\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiKeySecretVersion",
                        "keyName",
                        "requestLocation"
                    ]
                }
            }
        },
        "gcp:ces/ToolMcpToolApiAuthenticationBearerTokenConfig:ToolMcpToolApiAuthenticationBearerTokenConfig": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "(Output)\nThe bearer token. Must be in the format $context.variables.\u003cname_of_variable\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "token"
                    ]
                }
            }
        },
        "gcp:ces/ToolMcpToolApiAuthenticationOauthConfig:ToolMcpToolApiAuthenticationOauthConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "(Output)\nThe client ID from the OAuth provider.\n"
                },
                "clientSecretVersion": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource storing the\nclient secret.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-\u003cPROJECT-NUMBER\u003e@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "oauthGrantType": {
                    "type": "string",
                    "description": "(Output)\nOAuth grant types.\nPossible values:\nCLIENT_CREDENTIAL\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe OAuth scopes to grant.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "(Output)\nThe token endpoint in the OAuth provider to exchange for an access token.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clientId",
                        "clientSecretVersion",
                        "oauthGrantType",
                        "scopes",
                        "tokenEndpoint"
                    ]
                }
            }
        },
        "gcp:ces/ToolMcpToolApiAuthenticationServiceAccountAuthConfig:ToolMcpToolApiAuthenticationServiceAccountAuthConfig": {
            "properties": {
                "serviceAccount": {
                    "type": "string",
                    "description": "(Output)\nThe email address of the service account used for authenticatation. CES\nuses this service account to exchange an access token and the access token\nis then sent in the `Authorization` header of the request.\nThe service account must have the\n`roles/iam.serviceAccountTokenCreator` role granted to the\nCES service agent\n`service-\u003cPROJECT-NUMBER\u003e@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceAccount"
                    ]
                }
            }
        },
        "gcp:ces/ToolMcpToolApiAuthenticationServiceAgentIdTokenAuthConfig:ToolMcpToolApiAuthenticationServiceAgentIdTokenAuthConfig": {
            "type": "object"
        },
        "gcp:ces/ToolMcpToolServiceDirectoryConfig:ToolMcpToolServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "(Output)\nThe name of [Service\nDirectory](https://cloud.google.com/service-directory) service.\nFormat:\n`projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`.\nLocation of the service directory must be the same as the location of the\napp.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "service"
                    ]
                }
            }
        },
        "gcp:ces/ToolMcpToolTlsConfig:ToolMcpToolTlsConfig": {
            "properties": {
                "caCerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolMcpToolTlsConfigCaCert:ToolMcpToolTlsConfigCaCert"
                    },
                    "description": "(Output)\nSpecifies a list of allowed custom CA certificates for HTTPS\nverification.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "caCerts"
                    ]
                }
            }
        },
        "gcp:ces/ToolMcpToolTlsConfigCaCert:ToolMcpToolTlsConfigCaCert": {
            "properties": {
                "cert": {
                    "type": "string",
                    "description": "(Output)\nThe allowed custom CA certificates (in DER format) for\nHTTPS verification. This overrides the default SSL trust store. If this\nis empty or unspecified, CES will use Google's default trust\nstore to verify certificates. N.B. Make sure the HTTPS server\ncertificates are signed with \"subject alt name\". For instance a\ncertificate can be self-signed using the following command,\nopenssl x509 -req -days 200 -in example.com.csr \\\n-signkey example.com.key \\\n-out example.com.crt \\\n-extfile \u003c(printf \"\\nsubjectAltName='DNS:www.example.com'\")\nA base64-encoded string.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nThe name of the allowed custom CA certificates. This\ncan be used to disambiguate the custom CA certificates.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cert",
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiTool:ToolOpenApiTool": {
            "properties": {
                "apiAuthentications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolApiAuthentication:ToolOpenApiToolApiAuthentication"
                    },
                    "description": "(Output)\nAuthentication information required for API calls.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the system tool.\n"
                },
                "ignoreUnknownFields": {
                    "type": "boolean",
                    "description": "(Output)\nIf true, the agent will ignore unknown fields in the API response.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe name of the system tool.\n"
                },
                "openApiSchema": {
                    "type": "string",
                    "description": "(Output)\nThe OpenAPI schema in JSON or YAML format.\n"
                },
                "serviceDirectoryConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolServiceDirectoryConfig:ToolOpenApiToolServiceDirectoryConfig"
                    },
                    "description": "(Output)\nConfiguration for tools using Service Directory.\nStructure is documented below.\n"
                },
                "tlsConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolTlsConfig:ToolOpenApiToolTlsConfig"
                    },
                    "description": "(Output)\nThe TLS configuration.\nStructure is documented below.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe URL where this interface is available. Must be a valid absolute\nHTTPS URL in production.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiAuthentications",
                        "description",
                        "ignoreUnknownFields",
                        "name",
                        "openApiSchema",
                        "serviceDirectoryConfigs",
                        "tlsConfigs",
                        "url"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiToolApiAuthentication:ToolOpenApiToolApiAuthentication": {
            "properties": {
                "apiKeyConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolApiAuthenticationApiKeyConfig:ToolOpenApiToolApiAuthenticationApiKeyConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with API key.\nStructure is documented below.\n"
                },
                "bearerTokenConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolApiAuthenticationBearerTokenConfig:ToolOpenApiToolApiAuthenticationBearerTokenConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with a bearer token.\nStructure is documented below.\n"
                },
                "oauthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolApiAuthenticationOauthConfig:ToolOpenApiToolApiAuthenticationOauthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with OAuth.\nStructure is documented below.\n"
                },
                "serviceAccountAuthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolApiAuthenticationServiceAccountAuthConfig:ToolOpenApiToolApiAuthenticationServiceAccountAuthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication using a custom service account.\nStructure is documented below.\n"
                },
                "serviceAgentIdTokenAuthConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolApiAuthenticationServiceAgentIdTokenAuthConfig:ToolOpenApiToolApiAuthenticationServiceAgentIdTokenAuthConfig"
                    },
                    "description": "(Output)\nConfigurations for authentication with [ID\ntoken](https://cloud.google.com/docs/authentication/token-types#id) generated\nfrom service agent.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiKeyConfigs",
                        "bearerTokenConfigs",
                        "oauthConfigs",
                        "serviceAccountAuthConfigs",
                        "serviceAgentIdTokenAuthConfigs"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiToolApiAuthenticationApiKeyConfig:ToolOpenApiToolApiAuthenticationApiKeyConfig": {
            "properties": {
                "apiKeySecretVersion": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource storing the API key.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-\u003cPROJECT-NUMBER\u003e@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "keyName": {
                    "type": "string",
                    "description": "(Output)\nThe parameter name or the header name of the API key.\nE.g., If the API request is \"https://example.com/act?X-Api-Key=\", \"X-Api-Key\" would be the parameter name.\n"
                },
                "requestLocation": {
                    "type": "string",
                    "description": "(Output)\nKey location in the request.\nPossible values:\nHEADER\nQUERY_STRING\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "apiKeySecretVersion",
                        "keyName",
                        "requestLocation"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiToolApiAuthenticationBearerTokenConfig:ToolOpenApiToolApiAuthenticationBearerTokenConfig": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "(Output)\nThe bearer token. Must be in the format $context.variables.\u003cname_of_variable\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "token"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiToolApiAuthenticationOauthConfig:ToolOpenApiToolApiAuthenticationOauthConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "(Output)\nThe client ID from the OAuth provider.\n"
                },
                "clientSecretVersion": {
                    "type": "string",
                    "description": "(Output)\nThe name of the SecretManager secret version resource storing the\nclient secret.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-\u003cPROJECT-NUMBER\u003e@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "oauthGrantType": {
                    "type": "string",
                    "description": "(Output)\nOAuth grant types.\nPossible values:\nCLIENT_CREDENTIAL\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe OAuth scopes to grant.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "(Output)\nThe token endpoint in the OAuth provider to exchange for an access token.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clientId",
                        "clientSecretVersion",
                        "oauthGrantType",
                        "scopes",
                        "tokenEndpoint"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiToolApiAuthenticationServiceAccountAuthConfig:ToolOpenApiToolApiAuthenticationServiceAccountAuthConfig": {
            "properties": {
                "serviceAccount": {
                    "type": "string",
                    "description": "(Output)\nThe email address of the service account used for authenticatation. CES\nuses this service account to exchange an access token and the access token\nis then sent in the `Authorization` header of the request.\nThe service account must have the\n`roles/iam.serviceAccountTokenCreator` role granted to the\nCES service agent\n`service-\u003cPROJECT-NUMBER\u003e@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceAccount"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiToolApiAuthenticationServiceAgentIdTokenAuthConfig:ToolOpenApiToolApiAuthenticationServiceAgentIdTokenAuthConfig": {
            "type": "object"
        },
        "gcp:ces/ToolOpenApiToolServiceDirectoryConfig:ToolOpenApiToolServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "(Output)\nThe name of [Service\nDirectory](https://cloud.google.com/service-directory) service.\nFormat:\n`projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`.\nLocation of the service directory must be the same as the location of the\napp.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "service"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiToolTlsConfig:ToolOpenApiToolTlsConfig": {
            "properties": {
                "caCerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolOpenApiToolTlsConfigCaCert:ToolOpenApiToolTlsConfigCaCert"
                    },
                    "description": "(Output)\nSpecifies a list of allowed custom CA certificates for HTTPS\nverification.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "caCerts"
                    ]
                }
            }
        },
        "gcp:ces/ToolOpenApiToolTlsConfigCaCert:ToolOpenApiToolTlsConfigCaCert": {
            "properties": {
                "cert": {
                    "type": "string",
                    "description": "(Output)\nThe allowed custom CA certificates (in DER format) for\nHTTPS verification. This overrides the default SSL trust store. If this\nis empty or unspecified, CES will use Google's default trust\nstore to verify certificates. N.B. Make sure the HTTPS server\ncertificates are signed with \"subject alt name\". For instance a\ncertificate can be self-signed using the following command,\nopenssl x509 -req -days 200 -in example.com.csr \\\n-signkey example.com.key \\\n-out example.com.crt \\\n-extfile \u003c(printf \"\\nsubjectAltName='DNS:www.example.com'\")\nA base64-encoded string.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nThe name of the allowed custom CA certificates. This\ncan be used to disambiguate the custom CA certificates.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cert",
                        "displayName"
                    ]
                }
            }
        },
        "gcp:ces/ToolPythonFunction:ToolPythonFunction": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the Python function, parsed from the python code's\ndocstring.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Optional. The name of the Python function to execute. Must match a Python function\nname defined in the python code. Case sensitive. If the name is not\nprovided, the first function defined in the python code will be used.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "Optional. The Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description"
                    ]
                }
            }
        },
        "gcp:ces/ToolRemoteAgentTool:ToolRemoteAgentTool": {
            "properties": {
                "agentCards": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolRemoteAgentToolAgentCard:ToolRemoteAgentToolAgentCard"
                    },
                    "description": "(Output)\nThe agent card of the remote agent that this tool invokes.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the system tool.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe name of the system tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agentCards",
                        "description",
                        "name"
                    ]
                }
            }
        },
        "gcp:ces/ToolRemoteAgentToolAgentCard:ToolRemoteAgentToolAgentCard": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the system tool.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe name of the system tool.\n"
                },
                "skills": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolRemoteAgentToolAgentCardSkill:ToolRemoteAgentToolAgentCardSkill"
                    },
                    "description": "(Output)\nSkills represent a unit of ability an agent can perform. This may\nsomewhat abstract but represents a more focused set of actions that the agent is highly\nlikely to succeed at.\nStructure is documented below.\n"
                },
                "supportedInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolRemoteAgentToolAgentCardSupportedInterface:ToolRemoteAgentToolAgentCardSupportedInterface"
                    },
                    "description": "(Output)\nOrdered list of supported interfaces. The first entry is preferred.\nStructure is documented below.\n"
                },
                "version": {
                    "type": "string",
                    "description": "(Output)\nThe version of the agent.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "name",
                        "skills",
                        "supportedInterfaces",
                        "version"
                    ]
                }
            }
        },
        "gcp:ces/ToolRemoteAgentToolAgentCardSkill:ToolRemoteAgentToolAgentCardSkill": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the system tool.\n"
                },
                "examples": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nExample prompts or scenarios that this skill can handle.\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Output)\nA unique identifier for the agent's skill.\n"
                },
                "inputModes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe set of supported input media types for this skill, overriding the agent's\ndefaults.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe name of the system tool.\n"
                },
                "outputModes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe set of supported output media types for this skill, overriding the agent's\ndefaults.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nA set of keywords describing the skill's capabilities.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "examples",
                        "id",
                        "inputModes",
                        "name",
                        "outputModes",
                        "tags"
                    ]
                }
            }
        },
        "gcp:ces/ToolRemoteAgentToolAgentCardSupportedInterface:ToolRemoteAgentToolAgentCardSupportedInterface": {
            "properties": {
                "protocolBinding": {
                    "type": "string",
                    "description": "(Output)\nThe protocol binding supported at this URL. The core ones officially\nsupported are JSONRPC, GRPC and HTTP+JSON.\n"
                },
                "protocolVersion": {
                    "type": "string",
                    "description": "(Output)\nThe version of the A2A protocol this interface exposes.\nExamples: \"0.3\", \"1.0\"\n"
                },
                "tenant": {
                    "type": "string",
                    "description": "(Output)\nTenant ID to be used in the request when calling the agent.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe URL where this interface is available. Must be a valid absolute\nHTTPS URL in production.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "protocolBinding",
                        "protocolVersion",
                        "tenant",
                        "url"
                    ]
                }
            }
        },
        "gcp:ces/ToolSystemTool:ToolSystemTool": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the system tool.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe name of the system tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "name"
                    ]
                }
            }
        },
        "gcp:ces/ToolToolFakeConfig:ToolToolFakeConfig": {
            "properties": {
                "codeBlock": {
                    "$ref": "#/types/gcp:ces/ToolToolFakeConfigCodeBlock:ToolToolFakeConfigCodeBlock",
                    "description": "Code block which will be executed instead of a real tool call.\nStructure is documented below.\n"
                },
                "enableFakeMode": {
                    "type": "boolean",
                    "description": "Whether the tool is using fake mode.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolToolFakeConfigCodeBlock:ToolToolFakeConfigCodeBlock": {
            "properties": {
                "pythonCode": {
                    "type": "string",
                    "description": "Python code which will be invoked in tool fake mode.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:ces/ToolWidgetTool:ToolWidgetTool": {
            "properties": {
                "dataMapping": {
                    "$ref": "#/types/gcp:ces/ToolWidgetToolDataMapping:ToolWidgetToolDataMapping",
                    "description": "Optional. The mapping that defines how data from a source tool is mapped to the\nwidget's input parameters.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Optional. The description of the widget tool.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Required. The display name of the widget tool.\n"
                },
                "parameters": {
                    "$ref": "#/types/gcp:ces/ToolWidgetToolParameters:ToolWidgetToolParameters",
                    "description": "Optional. The input parameters of the widget tool. Represents a Schema object.\nStructure is documented below.\n"
                },
                "textResponseConfig": {
                    "$ref": "#/types/gcp:ces/ToolWidgetToolTextResponseConfig:ToolWidgetToolTextResponseConfig",
                    "description": "Optional. Configuration for always-included text responses.\nStructure is documented below.\n"
                },
                "uiConfig": {
                    "type": "string",
                    "description": "Optional. Configuration for rendering the widget. Represents a JSON object.\n"
                },
                "widgetType": {
                    "type": "string",
                    "description": "Optional. The type of the widget tool. If not specified, the default type will be CUSTOMIZED.\nPossible values:\nWIDGET_TYPE_UNSPECIFIED\nCUSTOM\nPRODUCT_CAROUSEL\nPRODUCT_DETAILS\nQUICK_ACTIONS\nPRODUCT_COMPARISON\nADVANCED_PRODUCT_DETAILS\nSHORT_FORM\nOVERALL_SATISFACTION\nORDER_SUMMARY\nAPPOINTMENT_DETAILS\nAPPOINTMENT_SCHEDULER\nCONTACT_FORM\nPossible values are: `WIDGET_TYPE_UNSPECIFIED`, `CUSTOM`, `PRODUCT_CAROUSEL`, `PRODUCT_DETAILS`, `QUICK_ACTIONS`, `PRODUCT_COMPARISON`, `ADVANCED_PRODUCT_DETAILS`, `SHORT_FORM`, `OVERALL_SATISFACTION`, `ORDER_SUMMARY`, `APPOINTMENT_DETAILS`, `APPOINTMENT_SCHEDULER`, `CONTACT_FORM`.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:ces/ToolWidgetToolDataMapping:ToolWidgetToolDataMapping": {
            "properties": {
                "fieldMappings": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. A map of widget input parameter fields to the corresponding output fields of the source tool.\nAn object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Optional. The mode of the data mapping.\nPossible values:\nMODE_UNSPECIFIED\nFIELD_MAPPING\nPYTHON_SCRIPT\nPossible values are: `MODE_UNSPECIFIED`, `FIELD_MAPPING`, `PYTHON_SCRIPT`.\n"
                },
                "pythonFunction": {
                    "$ref": "#/types/gcp:ces/ToolWidgetToolDataMappingPythonFunction:ToolWidgetToolDataMappingPythonFunction",
                    "description": "Optional. Configuration for a Python function used to transform the source tool's\noutput into the widget's input format.\nStructure is documented below.\n"
                },
                "sourceToolName": {
                    "type": "string",
                    "description": "Optional. The resource name of the tool that provides the data for the widget (e.g., a search tool or a custom function).\nFormat: projects/{project}/locations/{location}/agents/{agent}/tools/{tool}\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolWidgetToolDataMappingPythonFunction:ToolWidgetToolDataMappingPythonFunction": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "(Output)\nThe description of the Python function, parsed from the python code's\ndocstring.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Optional. The name of the Python function to execute. Must match a Python function\nname defined in the python code. Case sensitive. If the name is not\nprovided, the first function defined in the python code will be used.\n"
                },
                "pythonCode": {
                    "type": "string",
                    "description": "Optional. The Python code to execute for the tool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description"
                    ]
                }
            }
        },
        "gcp:ces/ToolWidgetToolParameters:ToolWidgetToolParameters": {
            "properties": {
                "additionalProperties": {
                    "type": "string",
                    "description": "Defines the schema for additional properties allowed in an object.\nThe value must be a valid JSON string representing the Schema object.\n(Note: OpenAPI also allows a boolean, this definition expects a Schema JSON).\n"
                },
                "anyOf": {
                    "type": "string",
                    "description": "The instance value should be valid against at least one of the schemas in this list.\n"
                },
                "default": {
                    "type": "string",
                    "description": "Default value of the data. Represents a dynamically typed value\nwhich can be either null, a number, a string, a boolean, a struct,\nor a list of values. The provided default value must be compatible\nwith the defined 'type' and other schema constraints.\n"
                },
                "defs": {
                    "type": "string",
                    "description": "A map of definitions for use by ref. Only allowed at the root of the schema.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the data.\n"
                },
                "enums": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Possible values of the element of primitive type with enum format.\nExamples:\n1. We can define direction as :\n{type:STRING, format:enum, enum:[\"EAST\", NORTH\", \"SOUTH\", \"WEST\"]}\n2. We can define apartment number as :\n{type:INTEGER, format:enum, enum:[\"101\", \"201\", \"301\"]}\n"
                },
                "items": {
                    "type": "string",
                    "description": "Schema of the elements of Type.ARRAY.\n"
                },
                "maxItems": {
                    "type": "integer",
                    "description": "Maximum number of the elements for Type.ARRAY. (int64 format)\n"
                },
                "maximum": {
                    "type": "number",
                    "description": "Maximum value for Type.INTEGER and Type.NUMBER.\n"
                },
                "minItems": {
                    "type": "integer",
                    "description": "Minimum number of the elements for Type.ARRAY. (int64 format)\n"
                },
                "minimum": {
                    "type": "number",
                    "description": "Minimum value for Type.INTEGER and Type.NUMBER.\n"
                },
                "nullable": {
                    "type": "boolean",
                    "description": "Indicates if the value may be null.\n"
                },
                "prefixItems": {
                    "type": "string",
                    "description": "Schemas of initial elements of Type.ARRAY.\n"
                },
                "properties": {
                    "type": "string",
                    "description": "Properties of Type.OBJECT.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "Allows indirect references between schema nodes. The value should be a\nvalid reference to a child of the root \u003cspan pulumi-lang-nodejs=\"`defs`\" pulumi-lang-dotnet=\"`Defs`\" pulumi-lang-go=\"`defs`\" pulumi-lang-python=\"`defs`\" pulumi-lang-yaml=\"`defs`\" pulumi-lang-java=\"`defs`\" pulumi-lang-hcl=\"`defs`\"\u003e`defs`\u003c/span\u003e.\nFor example, the following schema defines a reference to a schema node\nnamed \"Pet\":\ntype: object\nproperties:\npet:\nref: #/defs/Pet\ndefs:\nPet:\ntype: object\nproperties:\nname:\ntype: string\nThe value of the \"pet\" property is a reference to the schema node\nnamed \"Pet\".\nSee details in\nhttps://json-schema.org/understanding-json-schema/structuring.\n"
                },
                "requireds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required properties of Type.OBJECT.\n"
                },
                "title": {
                    "type": "string",
                    "description": "The title of the schema.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the data.\nPossible values:\nSTRING\nINTEGER\nNUMBER\nBOOLEAN\nOBJECT\nARRAY\n"
                },
                "uniqueItems": {
                    "type": "boolean",
                    "description": "Indicate the items in the array must be unique. Only applies to TYPE.ARRAY.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:ces/ToolWidgetToolTextResponseConfig:ToolWidgetToolTextResponseConfig": {
            "properties": {
                "staticText": {
                    "type": "string",
                    "description": "Optional. The static text response to return when type is STATIC.\n"
                },
                "textResponseInstruction": {
                    "type": "string",
                    "description": "Optional. Instruction for the LLM on how to generate the text response. Used as\nthe description for the text response parameter if type is LLM_GENERATED.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Optional. The strategy for providing the text response.\nPossible values:\nTYPE_UNSPECIFIED\nNONE\nLLM_GENERATED\nSTATIC\nPossible values are: `TYPE_UNSPECIFIED`, `NONE`, `LLM_GENERATED`, `STATIC`.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolsetMcpToolset:ToolsetMcpToolset": {
            "properties": {
                "apiAuthentication": {
                    "$ref": "#/types/gcp:ces/ToolsetMcpToolsetApiAuthentication:ToolsetMcpToolsetApiAuthentication",
                    "description": "Authentication information required to access tools and execute a tool\nagainst the MCP server. For API key auth, the API key can only be sent in\nthe request header; sending it via query parameters is not supported.\nStructure is documented below.\n"
                },
                "customHeaders": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The custom headers to send in the request to the MCP server. The values\nmust be in the format `$context.variables.\u003cname_of_variable\u003e` and can be\nset in the session variables. See\nhttps://docs.cloud.google.com/customer-engagement-ai/conversational-agents/ps/tool/open-api#openapi-injection\nfor more details.\n"
                },
                "serverAddress": {
                    "type": "string",
                    "description": "The address of the MCP server, for example, \"https://example.com/mcp/\". If\nthe server is built with the MCP SDK, the url should be suffixed with\n\"/mcp/\". Only Streamable HTTP transport based servers are supported. See\nhttps://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http\nfor more details.\n"
                },
                "serviceDirectoryConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetMcpToolsetServiceDirectoryConfig:ToolsetMcpToolsetServiceDirectoryConfig",
                    "description": "Service Directory configuration for VPC-SC, used to resolve service names\nwithin a perimeter.\nStructure is documented below.\n"
                },
                "tlsConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetMcpToolsetTlsConfig:ToolsetMcpToolsetTlsConfig",
                    "description": "The TLS configuration. Includes the custom server certificates that the\nclient should trust.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "serverAddress"
            ]
        },
        "gcp:ces/ToolsetMcpToolsetApiAuthentication:ToolsetMcpToolsetApiAuthentication": {
            "properties": {
                "apiKeyConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetMcpToolsetApiAuthenticationApiKeyConfig:ToolsetMcpToolsetApiAuthenticationApiKeyConfig",
                    "description": "Configurations for authentication with API key.\nStructure is documented below.\n"
                },
                "bearerTokenConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetMcpToolsetApiAuthenticationBearerTokenConfig:ToolsetMcpToolsetApiAuthenticationBearerTokenConfig",
                    "description": "Configurations for authentication with a bearer token.\nStructure is documented below.\n"
                },
                "oauthConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetMcpToolsetApiAuthenticationOauthConfig:ToolsetMcpToolsetApiAuthenticationOauthConfig",
                    "description": "Configurations for authentication with OAuth.\nStructure is documented below.\n"
                },
                "serviceAccountAuthConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetMcpToolsetApiAuthenticationServiceAccountAuthConfig:ToolsetMcpToolsetApiAuthenticationServiceAccountAuthConfig",
                    "description": "Configurations for authentication using a custom service account.\nStructure is documented below.\n"
                },
                "serviceAgentIdTokenAuthConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetMcpToolsetApiAuthenticationServiceAgentIdTokenAuthConfig:ToolsetMcpToolsetApiAuthenticationServiceAgentIdTokenAuthConfig",
                    "description": "Configurations for authentication with [ID\ntoken](https://cloud.google.com/docs/authentication/token-types#id) generated\nfrom service agent.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolsetMcpToolsetApiAuthenticationApiKeyConfig:ToolsetMcpToolsetApiAuthenticationApiKeyConfig": {
            "properties": {
                "apiKeySecretVersion": {
                    "type": "string",
                    "description": "The name of the SecretManager secret version resource storing the API key.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "keyName": {
                    "type": "string",
                    "description": "The parameter name or the header name of the API key.\nE.g., If the API request is \"https://example.com/act?X-Api-Key=\", \"X-Api-Key\" would be the parameter name.\n"
                },
                "requestLocation": {
                    "type": "string",
                    "description": "Key location in the request. For API key auth on MCP toolsets,\nthe API key can only be sent in the request header.\nPossible values:\nHEADER\n"
                }
            },
            "type": "object",
            "required": [
                "apiKeySecretVersion",
                "keyName",
                "requestLocation"
            ]
        },
        "gcp:ces/ToolsetMcpToolsetApiAuthenticationBearerTokenConfig:ToolsetMcpToolsetApiAuthenticationBearerTokenConfig": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolsetMcpToolsetApiAuthenticationOauthConfig:ToolsetMcpToolsetApiAuthenticationOauthConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "The client ID from the OAuth provider.\n"
                },
                "clientSecretVersion": {
                    "type": "string",
                    "description": "The name of the SecretManager secret version resource storing the\nclient secret.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "oauthGrantType": {
                    "type": "string",
                    "description": "OAuth grant types.\nPossible values:\nCLIENT_CREDENTIAL\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The OAuth scopes to grant.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "The token endpoint in the OAuth provider to exchange for an access token.\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "clientSecretVersion",
                "oauthGrantType",
                "tokenEndpoint"
            ]
        },
        "gcp:ces/ToolsetMcpToolsetApiAuthenticationServiceAccountAuthConfig:ToolsetMcpToolsetApiAuthenticationServiceAccountAuthConfig": {
            "properties": {
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The OAuth scopes to grant. If not specified, the default scope\n`https://www.googleapis.com/auth/cloud-platform` is used.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "The email address of the service account used for authenticatation. CES\nuses this service account to exchange an access token and the access token\nis then sent in the `Authorization` header of the request.\nThe service account must have the\n`roles/iam.serviceAccountTokenCreator` role granted to the\nCES service agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccount"
            ]
        },
        "gcp:ces/ToolsetMcpToolsetApiAuthenticationServiceAgentIdTokenAuthConfig:ToolsetMcpToolsetApiAuthenticationServiceAgentIdTokenAuthConfig": {
            "type": "object"
        },
        "gcp:ces/ToolsetMcpToolsetServiceDirectoryConfig:ToolsetMcpToolsetServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "The name of [Service\nDirectory](https://cloud.google.com/service-directory) service.\nFormat:\n`projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`.\nLocation of the service directory must be the same as the location of the\napp.\n"
                }
            },
            "type": "object",
            "required": [
                "service"
            ]
        },
        "gcp:ces/ToolsetMcpToolsetTlsConfig:ToolsetMcpToolsetTlsConfig": {
            "properties": {
                "caCerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolsetMcpToolsetTlsConfigCaCert:ToolsetMcpToolsetTlsConfigCaCert"
                    },
                    "description": "Specifies a list of allowed custom CA certificates for HTTPS\nverification.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "caCerts"
            ]
        },
        "gcp:ces/ToolsetMcpToolsetTlsConfigCaCert:ToolsetMcpToolsetTlsConfigCaCert": {
            "properties": {
                "cert": {
                    "type": "string",
                    "description": "The allowed custom CA certificates (in DER format) for\nHTTPS verification. This overrides the default SSL trust store. If this\nis empty or unspecified, CES will use Google's default trust\nstore to verify certificates. N.B. Make sure the HTTPS server\ncertificates are signed with \"subject alt name\". For instance a\ncertificate can be self-signed using the following command,\nopenssl x509 -req -days 200 -in example.com.csr \\\n-signkey example.com.key \\\n-out example.com.crt \\\n-extfile \u003c(printf \"\\nsubjectAltName='DNS:www.example.com'\")\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The name of the allowed custom CA certificates. This\ncan be used to disambiguate the custom CA certificates.\n"
                }
            },
            "type": "object",
            "required": [
                "cert",
                "displayName"
            ]
        },
        "gcp:ces/ToolsetOpenApiToolset:ToolsetOpenApiToolset": {
            "properties": {
                "apiAuthentication": {
                    "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetApiAuthentication:ToolsetOpenApiToolsetApiAuthentication",
                    "description": "Authentication information required for API calls.\nStructure is documented below.\n"
                },
                "ignoreUnknownFields": {
                    "type": "boolean",
                    "description": "If true, the agent will ignore unknown fields in the API response for all\noperations defined in the OpenAPI schema.\n"
                },
                "openApiSchema": {
                    "type": "string",
                    "description": "The OpenAPI schema of the toolset.\n"
                },
                "serviceDirectoryConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetServiceDirectoryConfig:ToolsetOpenApiToolsetServiceDirectoryConfig",
                    "description": "Configuration for tools using Service Directory.\nStructure is documented below.\n"
                },
                "tlsConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetTlsConfig:ToolsetOpenApiToolsetTlsConfig",
                    "description": "The TLS configuration.\nStructure is documented below.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe server URL of the Open API schema.\nThis field is only set in toolsets in the environment dependencies\nduring the export process if the schema contains a server url.\nDuring the import process, if this url is present in the environment dependencies\nand the schema has the $env_var placeholder,\nit will replace the placeholder in the schema.\n"
                }
            },
            "type": "object",
            "required": [
                "openApiSchema"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "openApiSchema",
                        "url"
                    ]
                }
            }
        },
        "gcp:ces/ToolsetOpenApiToolsetApiAuthentication:ToolsetOpenApiToolsetApiAuthentication": {
            "properties": {
                "apiKeyConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetApiAuthenticationApiKeyConfig:ToolsetOpenApiToolsetApiAuthenticationApiKeyConfig",
                    "description": "Configurations for authentication with API key.\nStructure is documented below.\n"
                },
                "bearerTokenConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetApiAuthenticationBearerTokenConfig:ToolsetOpenApiToolsetApiAuthenticationBearerTokenConfig",
                    "description": "Configurations for authentication with a bearer token.\nStructure is documented below.\n"
                },
                "oauthConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetApiAuthenticationOauthConfig:ToolsetOpenApiToolsetApiAuthenticationOauthConfig",
                    "description": "Configurations for authentication with OAuth.\nStructure is documented below.\n"
                },
                "serviceAccountAuthConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetApiAuthenticationServiceAccountAuthConfig:ToolsetOpenApiToolsetApiAuthenticationServiceAccountAuthConfig",
                    "description": "Configurations for authentication using a custom service account.\nStructure is documented below.\n"
                },
                "serviceAgentIdTokenAuthConfig": {
                    "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetApiAuthenticationServiceAgentIdTokenAuthConfig:ToolsetOpenApiToolsetApiAuthenticationServiceAgentIdTokenAuthConfig",
                    "description": "Configurations for authentication with [ID\ntoken](https://cloud.google.com/docs/authentication/token-types#id) generated\nfrom service agent.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolsetOpenApiToolsetApiAuthenticationApiKeyConfig:ToolsetOpenApiToolsetApiAuthenticationApiKeyConfig": {
            "properties": {
                "apiKeySecretVersion": {
                    "type": "string",
                    "description": "The name of the SecretManager secret version resource storing the API key.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "keyName": {
                    "type": "string",
                    "description": "The parameter name or the header name of the API key.\nE.g., If the API request is \"https://example.com/act?X-Api-Key=\", \"X-Api-Key\" would be the parameter name.\n"
                },
                "requestLocation": {
                    "type": "string",
                    "description": "Key location in the request. For API key auth on MCP toolsets,\nthe API key can only be sent in the request header.\nPossible values:\nHEADER\n"
                }
            },
            "type": "object",
            "required": [
                "apiKeySecretVersion",
                "keyName",
                "requestLocation"
            ]
        },
        "gcp:ces/ToolsetOpenApiToolsetApiAuthenticationBearerTokenConfig:ToolsetOpenApiToolsetApiAuthenticationBearerTokenConfig": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolsetOpenApiToolsetApiAuthenticationOauthConfig:ToolsetOpenApiToolsetApiAuthenticationOauthConfig": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "The client ID from the OAuth provider.\n"
                },
                "clientSecretVersion": {
                    "type": "string",
                    "description": "The name of the SecretManager secret version resource storing the\nclient secret.\nFormat: `projects/{project}/secrets/{secret}/versions/{version}`\nNote: You should grant `roles/secretmanager.secretAccessor` role to the CES\nservice agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                },
                "oauthGrantType": {
                    "type": "string",
                    "description": "OAuth grant types.\nPossible values:\nCLIENT_CREDENTIAL\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The OAuth scopes to grant.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "The token endpoint in the OAuth provider to exchange for an access token.\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "clientSecretVersion",
                "oauthGrantType",
                "tokenEndpoint"
            ]
        },
        "gcp:ces/ToolsetOpenApiToolsetApiAuthenticationServiceAccountAuthConfig:ToolsetOpenApiToolsetApiAuthenticationServiceAccountAuthConfig": {
            "properties": {
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The OAuth scopes to grant. If not specified, the default scope\n`https://www.googleapis.com/auth/cloud-platform` is used.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "The email address of the service account used for authenticatation. CES\nuses this service account to exchange an access token and the access token\nis then sent in the `Authorization` header of the request.\nThe service account must have the\n`roles/iam.serviceAccountTokenCreator` role granted to the\nCES service agent\n`service-@gcp-sa-ces.iam.gserviceaccount.com`.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccount"
            ]
        },
        "gcp:ces/ToolsetOpenApiToolsetApiAuthenticationServiceAgentIdTokenAuthConfig:ToolsetOpenApiToolsetApiAuthenticationServiceAgentIdTokenAuthConfig": {
            "type": "object"
        },
        "gcp:ces/ToolsetOpenApiToolsetServiceDirectoryConfig:ToolsetOpenApiToolsetServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "The name of [Service\nDirectory](https://cloud.google.com/service-directory) service.\nFormat:\n`projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}`.\nLocation of the service directory must be the same as the location of the\napp.\n"
                }
            },
            "type": "object",
            "required": [
                "service"
            ]
        },
        "gcp:ces/ToolsetOpenApiToolsetTlsConfig:ToolsetOpenApiToolsetTlsConfig": {
            "properties": {
                "caCerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:ces/ToolsetOpenApiToolsetTlsConfigCaCert:ToolsetOpenApiToolsetTlsConfigCaCert"
                    },
                    "description": "Specifies a list of allowed custom CA certificates for HTTPS\nverification.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "caCerts"
            ]
        },
        "gcp:ces/ToolsetOpenApiToolsetTlsConfigCaCert:ToolsetOpenApiToolsetTlsConfigCaCert": {
            "properties": {
                "cert": {
                    "type": "string",
                    "description": "The allowed custom CA certificates (in DER format) for\nHTTPS verification. This overrides the default SSL trust store. If this\nis empty or unspecified, CES will use Google's default trust\nstore to verify certificates. N.B. Make sure the HTTPS server\ncertificates are signed with \"subject alt name\". For instance a\ncertificate can be self-signed using the following command,\nopenssl x509 -req -days 200 -in example.com.csr \\\n-signkey example.com.key \\\n-out example.com.crt \\\n-extfile \u003c(printf \"\\nsubjectAltName='DNS:www.example.com'\")\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The name of the allowed custom CA certificates. This\ncan be used to disambiguate the custom CA certificates.\n"
                }
            },
            "type": "object",
            "required": [
                "cert",
                "displayName"
            ]
        },
        "gcp:ces/ToolsetToolFakeConfig:ToolsetToolFakeConfig": {
            "properties": {
                "codeBlock": {
                    "$ref": "#/types/gcp:ces/ToolsetToolFakeConfigCodeBlock:ToolsetToolFakeConfigCodeBlock",
                    "description": "Code block which will be executed instead of a real tool call.\nStructure is documented below.\n"
                },
                "enableFakeMode": {
                    "type": "boolean",
                    "description": "Whether the tool is using fake mode.\n"
                }
            },
            "type": "object"
        },
        "gcp:ces/ToolsetToolFakeConfigCodeBlock:ToolsetToolFakeConfigCodeBlock": {
            "properties": {
                "pythonCode": {
                    "type": "string",
                    "description": "Python code which will be invoked in tool fake mode.\n"
                }
            },
            "type": "object",
            "required": [
                "pythonCode"
            ]
        },
        "gcp:chronicle/DashboardChartChartLayout:DashboardChartChartLayout": {
            "properties": {
                "spanX": {
                    "type": "integer",
                    "description": "(Required)\n"
                },
                "spanY": {
                    "type": "integer",
                    "description": "(Required)\n"
                },
                "startX": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "startY": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object",
            "required": [
                "spanX",
                "spanY"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChart:DashboardChartDashboardChart": {
            "properties": {
                "chartDatasource": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartChartDatasource:DashboardChartDashboardChartChartDatasource",
                    "description": "Query and datasource used in the chart.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the dashboardChart.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "Display name/Title of the dashboardChart visible to users.\n"
                },
                "drillDownConfig": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfig:DashboardChartDashboardChartDrillDownConfig",
                    "description": "Drill down configuration.\nStructure is documented below.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "(Output)\nThis checksum is computed by the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe resource name of the DashboardChart.\n"
                },
                "tileType": {
                    "type": "string",
                    "description": "Type of tile (e.g., visualization, button, markdown).\nPossible values are: `TILE_TYPE_UNSPECIFIED`, `TILE_TYPE_VISUALIZATION`, `TILE_TYPE_BUTTON`, `TILE_TYPE_MARKDOWN`.\n"
                },
                "visualization": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualization:DashboardChartDashboardChartVisualization",
                    "description": "Visualization config for a chart.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "visualization"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "displayName",
                        "etag",
                        "name",
                        "visualization"
                    ]
                }
            }
        },
        "gcp:chronicle/DashboardChartDashboardChartChartDatasource:DashboardChartDashboardChartChartDatasource": {
            "properties": {
                "dashboardQuery": {
                    "type": "string",
                    "description": "(Output)\nThe unique system ID of the query linked to this chart.\n"
                },
                "dataSources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Name(s) of the datasource used in the chart. Available values include:\n'UDM', 'ENTITY', 'INGESTION_METRICS', 'RULE_DETECTIONS', 'RULESETS',\n'GLOBAL', 'IOC_MATCHES', 'RULES', 'SOAR_CASES', 'SOAR_PLAYBOOKS',\n'SOAR_CASE_HISTORY', 'DATA_TABLE', 'INVESTIGATION', 'INVESTIGATION_FEEDBACK'.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dashboardQuery"
                    ]
                }
            }
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfig:DashboardChartDashboardChartDrillDownConfig": {
            "properties": {
                "leftDrillDowns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDown:DashboardChartDashboardChartDrillDownConfigLeftDrillDown"
                    },
                    "description": "Structure is documented below.\n"
                },
                "rightDrillDowns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDown:DashboardChartDashboardChartDrillDownConfigRightDrillDown"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDown:DashboardChartDashboardChartDrillDownConfigLeftDrillDown": {
            "properties": {
                "customSettings": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettings:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettings",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "defaultSettings": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownDefaultSettings:DashboardChartDashboardChartDrillDownConfigLeftDrillDownDefaultSettings",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Required)\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "id"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettings:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettings": {
            "properties": {
                "externalLink": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsExternalLink:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsExternalLink",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "filter": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilter:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilter",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "leftClickColumn": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "newTab": {
                    "type": "boolean",
                    "description": "(Required)\n"
                },
                "query": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsQuery:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsQuery",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "newTab"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsExternalLink:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsExternalLink": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "link": {
                    "type": "string",
                    "description": "(Required)\n"
                }
            },
            "type": "object",
            "required": [
                "link"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilter:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilter": {
            "properties": {
                "dashboardFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilterDashboardFilter:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilterDashboardFilter"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "dashboardFilters"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilterDashboardFilter:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilterDashboardFilter": {
            "properties": {
                "dashboardFilterId": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "filterOperatorAndValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilterDashboardFilterFilterOperatorAndValue:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilterDashboardFilterFilterOperatorAndValue"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "dashboardFilterId",
                "filterOperatorAndValues"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilterDashboardFilterFilterOperatorAndValue:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsFilterDashboardFilterFilterOperatorAndValue": {
            "properties": {
                "fieldValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional)\n"
                },
                "filterOperator": {
                    "type": "string",
                    "description": "Possible values are: `EQUAL`, `NOT_EQUAL`, `IN`, `GREATER_THAN`, `GREATER_THAN_OR_EQUAL_TO`, `LESS_THAN`, `LESS_THAN_OR_EQUAL_TO`, `BETWEEN`, `PAST`, `IS_NULL`, `IS_NOT_NULL`, `STARTS_WITH`, `ENDS_WITH`, `DOES_NOT_STARTS_WITH`, `DOES_NOT_ENDS_WITH`, `NOT_IN`, `CONTAINS`, `DOES_NOT_CONTAIN`.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsQuery:DashboardChartDashboardChartDrillDownConfigLeftDrillDownCustomSettingsQuery": {
            "properties": {
                "query": {
                    "type": "string",
                    "description": "(Required)\n"
                }
            },
            "type": "object",
            "required": [
                "query"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigLeftDrillDownDefaultSettings:DashboardChartDashboardChartDrillDownConfigLeftDrillDownDefaultSettings": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "(Required)\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDown:DashboardChartDashboardChartDrillDownConfigRightDrillDown": {
            "properties": {
                "customSettings": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettings:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettings",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "defaultSettings": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownDefaultSettings:DashboardChartDashboardChartDrillDownConfigRightDrillDownDefaultSettings",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Required)\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "id"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettings:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettings": {
            "properties": {
                "externalLink": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsExternalLink:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsExternalLink",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "filter": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilter:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilter",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "newTab": {
                    "type": "boolean",
                    "description": "(Required)\n"
                },
                "query": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsQuery:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsQuery",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "newTab"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsExternalLink:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsExternalLink": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "link": {
                    "type": "string",
                    "description": "(Required)\n"
                }
            },
            "type": "object",
            "required": [
                "link"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilter:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilter": {
            "properties": {
                "dashboardFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilterDashboardFilter:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilterDashboardFilter"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "dashboardFilters"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilterDashboardFilter:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilterDashboardFilter": {
            "properties": {
                "dashboardFilterId": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "filterOperatorAndValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilterDashboardFilterFilterOperatorAndValue:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilterDashboardFilterFilterOperatorAndValue"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "dashboardFilterId",
                "filterOperatorAndValues"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilterDashboardFilterFilterOperatorAndValue:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsFilterDashboardFilterFilterOperatorAndValue": {
            "properties": {
                "fieldValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional)\n"
                },
                "filterOperator": {
                    "type": "string",
                    "description": "Possible values are: `EQUAL`, `NOT_EQUAL`, `IN`, `GREATER_THAN`, `GREATER_THAN_OR_EQUAL_TO`, `LESS_THAN`, `LESS_THAN_OR_EQUAL_TO`, `BETWEEN`, `PAST`, `IS_NULL`, `IS_NOT_NULL`, `STARTS_WITH`, `ENDS_WITH`, `DOES_NOT_STARTS_WITH`, `DOES_NOT_ENDS_WITH`, `NOT_IN`, `CONTAINS`, `DOES_NOT_CONTAIN`.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsQuery:DashboardChartDashboardChartDrillDownConfigRightDrillDownCustomSettingsQuery": {
            "properties": {
                "query": {
                    "type": "string",
                    "description": "(Required)\n"
                }
            },
            "type": "object",
            "required": [
                "query"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartDrillDownConfigRightDrillDownDefaultSettings:DashboardChartDashboardChartDrillDownConfigRightDrillDownDefaultSettings": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "(Required)\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualization:DashboardChartDashboardChartVisualization": {
            "properties": {
                "button": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationButton:DashboardChartDashboardChartVisualizationButton",
                    "description": "Button config if tileType is TILE_TYPE_BUTTON.\nStructure is documented below.\n"
                },
                "columnDefs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationColumnDef:DashboardChartDashboardChartVisualizationColumnDef"
                    },
                    "description": "Structure is documented below.\n"
                },
                "googleMapsConfig": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationGoogleMapsConfig:DashboardChartDashboardChartVisualizationGoogleMapsConfig",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "groupingType": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "legends": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationLegend:DashboardChartDashboardChartVisualizationLegend"
                    },
                    "description": "Structure is documented below.\n"
                },
                "markdown": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationMarkdown:DashboardChartDashboardChartVisualizationMarkdown",
                    "description": "Markdown config if tileType is TILE_TYPE_MARKDOWN.\nStructure is documented below.\n"
                },
                "series": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeries:DashboardChartDashboardChartVisualizationSeries"
                    },
                    "description": "Structure is documented below.\n"
                },
                "seriesColumns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional)\n"
                },
                "tableConfig": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationTableConfig:DashboardChartDashboardChartVisualizationTableConfig",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "thresholdColoringEnabled": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                },
                "tooltip": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationTooltip:DashboardChartDashboardChartVisualizationTooltip",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "visualMaps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationVisualMap:DashboardChartDashboardChartVisualizationVisualMap"
                    },
                    "description": "Structure is documented below.\n"
                },
                "xAxes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationXAxis:DashboardChartDashboardChartVisualizationXAxis"
                    },
                    "description": "Structure is documented below.\n"
                },
                "yAxes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationYAxis:DashboardChartDashboardChartVisualizationYAxis"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationButton:DashboardChartDashboardChartVisualizationButton": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "hyperlink": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "label": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "newTab": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                },
                "properties": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationButtonProperties:DashboardChartDashboardChartVisualizationButtonProperties",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "hyperlink",
                "label"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationButtonProperties:DashboardChartDashboardChartVisualizationButtonProperties": {
            "properties": {
                "buttonStyle": {
                    "type": "string",
                    "description": "Possible values are: `BUTTON_STYLE_UNSPECIFIED`, `BUTTON_STYLE_FILLED`, `BUTTON_STYLE_OUTLINED`, `BUTTON_STYLE_TRANSPARENT`.\n"
                },
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationColumnDef:DashboardChartDashboardChartVisualizationColumnDef": {
            "properties": {
                "field": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "header": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationGoogleMapsConfig:DashboardChartDashboardChartVisualizationGoogleMapsConfig": {
            "properties": {
                "dataSettings": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationGoogleMapsConfigDataSettings:DashboardChartDashboardChartVisualizationGoogleMapsConfigDataSettings",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "mapPosition": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationGoogleMapsConfigMapPosition:DashboardChartDashboardChartVisualizationGoogleMapsConfigMapPosition",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "plotMode": {
                    "type": "string",
                    "description": "Possible values are: `PLOT_MODE_UNSPECIFIED`, `PLOT_MODE_POINTS`, `PLOT_MODE_HEATMAP`, `PLOT_MODE_BOTH`.\n"
                },
                "pointSettings": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationGoogleMapsConfigPointSettings:DashboardChartDashboardChartVisualizationGoogleMapsConfigPointSettings",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationGoogleMapsConfigDataSettings:DashboardChartDashboardChartVisualizationGoogleMapsConfigDataSettings": {
            "properties": {
                "countColumn": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "latitudeColumn": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "longitudeColumn": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationGoogleMapsConfigMapPosition:DashboardChartDashboardChartVisualizationGoogleMapsConfigMapPosition": {
            "properties": {
                "fitData": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                },
                "latitudeValue": {
                    "type": "number",
                    "description": "(Optional)\n"
                },
                "longitudeValue": {
                    "type": "number",
                    "description": "(Optional)\n"
                },
                "zoomScaleValue": {
                    "type": "number",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationGoogleMapsConfigPointSettings:DashboardChartDashboardChartVisualizationGoogleMapsConfigPointSettings": {
            "properties": {
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "pointSizeType": {
                    "type": "string",
                    "description": "Possible values are: `POINT_SIZE_TYPE_UNSPECIFIED`, `POINT_SIZE_TYPE_FIXED`, `POINT_SIZE_TYPE_PROPORTIONAL_TO_SIZE`.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationLegend:DashboardChartDashboardChartVisualizationLegend": {
            "properties": {
                "bottom": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "id": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "left": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "legendAlign": {
                    "type": "string",
                    "description": "Possible values are: `AUTO`, `LEFT`, `RIGHT`.\n"
                },
                "legendOrient": {
                    "type": "string",
                    "description": "Possible values are: `VERTICAL`, `HORIZONTAL`.\n"
                },
                "paddings": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "(Optional)\n"
                },
                "right": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "show": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                },
                "top": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "z": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "zLevel": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "bottom",
                        "left",
                        "paddings",
                        "right",
                        "show",
                        "top",
                        "z",
                        "zLevel"
                    ]
                }
            }
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationMarkdown:DashboardChartDashboardChartVisualizationMarkdown": {
            "properties": {
                "content": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "properties": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationMarkdownProperties:DashboardChartDashboardChartVisualizationMarkdownProperties",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "content"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationMarkdownProperties:DashboardChartDashboardChartVisualizationMarkdownProperties": {
            "properties": {
                "backgroundColor": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeries:DashboardChartDashboardChartVisualizationSeries": {
            "properties": {
                "areaStyle": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesAreaStyle:DashboardChartDashboardChartVisualizationSeriesAreaStyle",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "dataLabel": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesDataLabel:DashboardChartDashboardChartVisualizationSeriesDataLabel",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "encode": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesEncode:DashboardChartDashboardChartVisualizationSeriesEncode",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "field": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "gaugeConfig": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesGaugeConfig:DashboardChartDashboardChartVisualizationSeriesGaugeConfig",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "itemColors": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesItemColors:DashboardChartDashboardChartVisualizationSeriesItemColors",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "itemStyle": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesItemStyle:DashboardChartDashboardChartVisualizationSeriesItemStyle",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "label": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "metricTrendConfig": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesMetricTrendConfig:DashboardChartDashboardChartVisualizationSeriesMetricTrendConfig",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "radii": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional)\n"
                },
                "seriesName": {
                    "type": "string",
                    "description": "User specified series label.\n"
                },
                "seriesStackStrategy": {
                    "type": "string",
                    "description": "Possible values are: `SAMESIGN`, `ALL`, `POSITIVE`, `NEGATIVE`.\n"
                },
                "seriesType": {
                    "type": "string",
                    "description": "Possible values are: `LINE`, `BAR`, `PIE`, `TEXT`, `MAP`, `GAUGE`, `SCATTERPLOT`.\n"
                },
                "seriesUniqueValue": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "showBackground": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                },
                "showSymbol": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                },
                "stack": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "showBackground"
                    ]
                }
            }
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesAreaStyle:DashboardChartDashboardChartVisualizationSeriesAreaStyle": {
            "properties": {
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "opacity": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "origin": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "shadowBlur": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "shadowColor": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "shadowOffsetX": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "shadowOffsetY": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesDataLabel:DashboardChartDashboardChartVisualizationSeriesDataLabel": {
            "properties": {
                "show": {
                    "type": "boolean",
                    "description": "Whether to show data label.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesEncode:DashboardChartDashboardChartVisualizationSeriesEncode": {
            "properties": {
                "itemName": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "value": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "x": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "y": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesGaugeConfig:DashboardChartDashboardChartVisualizationSeriesGaugeConfig": {
            "properties": {
                "baseValue": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesGaugeConfigBaseValue:DashboardChartDashboardChartVisualizationSeriesGaugeConfigBaseValue",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "limitValue": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesGaugeConfigLimitValue:DashboardChartDashboardChartVisualizationSeriesGaugeConfigLimitValue",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "thresholdValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesGaugeConfigThresholdValue:DashboardChartDashboardChartVisualizationSeriesGaugeConfigThresholdValue"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesGaugeConfigBaseValue:DashboardChartDashboardChartVisualizationSeriesGaugeConfigBaseValue": {
            "properties": {
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "value": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesGaugeConfigLimitValue:DashboardChartDashboardChartVisualizationSeriesGaugeConfigLimitValue": {
            "properties": {
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "value": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesGaugeConfigThresholdValue:DashboardChartDashboardChartVisualizationSeriesGaugeConfigThresholdValue": {
            "properties": {
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "value": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesItemColors:DashboardChartDashboardChartVisualizationSeriesItemColors": {
            "properties": {
                "colors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesItemColorsColor:DashboardChartDashboardChartVisualizationSeriesItemColorsColor"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesItemColorsColor:DashboardChartDashboardChartVisualizationSeriesItemColorsColor": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "value": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesItemColorsColorValue:DashboardChartDashboardChartVisualizationSeriesItemColorsColorValue",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesItemColorsColorValue:DashboardChartDashboardChartVisualizationSeriesItemColorsColorValue": {
            "properties": {
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "label": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesItemStyle:DashboardChartDashboardChartVisualizationSeriesItemStyle": {
            "properties": {
                "borderColor": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "borderWidth": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationSeriesMetricTrendConfig:DashboardChartDashboardChartVisualizationSeriesMetricTrendConfig": {
            "properties": {
                "metricDisplayTrend": {
                    "type": "string",
                    "description": "Possible values are: `METRIC_DISPLAY_TREND_UNSPECIFIED`, `METRIC_DISPLAY_TREND_ABSOLUTE_VALUE`, `METRIC_DISPLAY_TREND_PERCENTAGE`, `METRIC_DISPLAY_TREND_ABSOLUTE_VALUE_AND_PERCENTAGE`.\n"
                },
                "metricFormat": {
                    "type": "string",
                    "description": "Possible values are: `METRIC_FORMAT_UNSPECIFIED`, `METRIC_FORMAT_NUMBER`, `METRIC_FORMAT_PLAIN_TEXT`.\n"
                },
                "metricTrendType": {
                    "type": "string",
                    "description": "Possible values are: `METRIC_TREND_TYPE_UNSPECIFIED`, `METRIC_TREND_TYPE_REGULAR`, `METRIC_TREND_TYPE_INVERSE`.\n"
                },
                "showMetricTrend": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationTableConfig:DashboardChartDashboardChartVisualizationTableConfig": {
            "properties": {
                "columnRenderTypeSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationTableConfigColumnRenderTypeSetting:DashboardChartDashboardChartVisualizationTableConfigColumnRenderTypeSetting"
                    },
                    "description": "Structure is documented below.\n"
                },
                "columnTooltipSettings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationTableConfigColumnTooltipSetting:DashboardChartDashboardChartVisualizationTableConfigColumnTooltipSetting"
                    },
                    "description": "Structure is documented below.\n"
                },
                "enableTextWrap": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationTableConfigColumnRenderTypeSetting:DashboardChartDashboardChartVisualizationTableConfigColumnRenderTypeSetting": {
            "properties": {
                "columnRenderType": {
                    "type": "string",
                    "description": "Possible values are: `RENDER_TYPE_UNSPECIFIED`, `RENDER_TYPE_TEXT`, `RENDER_TYPE_ICON`, `RENDER_TYPE_ICON_AND_TEXT`.\n"
                },
                "field": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationTableConfigColumnTooltipSetting:DashboardChartDashboardChartVisualizationTableConfigColumnTooltipSetting": {
            "properties": {
                "cellTooltipText": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "field": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "headerTooltipText": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object",
            "required": [
                "field"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationTooltip:DashboardChartDashboardChartVisualizationTooltip": {
            "properties": {
                "show": {
                    "type": "boolean",
                    "description": "(Optional)\n"
                },
                "tooltipTrigger": {
                    "type": "string",
                    "description": "Possible values are: `TOOLTIP_TRIGGER_UNSPECIFIED`, `TOOLTIP_TRIGGER_NONE`, `TOOLTIP_TRIGGER_ITEM`, `TOOLTIP_TRIGGER_AXIS`.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationVisualMap:DashboardChartDashboardChartVisualizationVisualMap": {
            "properties": {
                "pieces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/DashboardChartDashboardChartVisualizationVisualMapPiece:DashboardChartDashboardChartVisualizationVisualMapPiece"
                    },
                    "description": "Structure is documented below.\n"
                },
                "visualMapType": {
                    "type": "string",
                    "description": "Possible values are: `VISUAL_MAP_TYPE_UNSPECIFIED`, `CONTINUOUS`, `PIECEWISE`.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationVisualMapPiece:DashboardChartDashboardChartVisualizationVisualMapPiece": {
            "properties": {
                "color": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "label": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "max": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "min": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationXAxis:DashboardChartDashboardChartVisualizationXAxis": {
            "properties": {
                "axisType": {
                    "type": "string",
                    "description": "Possible values are: `VALUE`, `CATEGORY`, `TIME`, `LOG`.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "max": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "min": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "max",
                        "min"
                    ]
                }
            }
        },
        "gcp:chronicle/DashboardChartDashboardChartVisualizationYAxis:DashboardChartDashboardChartVisualizationYAxis": {
            "properties": {
                "axisType": {
                    "type": "string",
                    "description": "Possible values are: `VALUE`, `CATEGORY`, `TIME`, `LOG`.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "max": {
                    "type": "integer",
                    "description": "(Optional)\n"
                },
                "min": {
                    "type": "integer",
                    "description": "(Optional)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "max",
                        "min"
                    ]
                }
            }
        },
        "gcp:chronicle/DashboardChartDashboardQuery:DashboardChartDashboardQuery": {
            "properties": {
                "etag": {
                    "type": "string",
                    "description": "(Output)\nThis checksum is computed by the server.\n"
                },
                "input": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardQueryInput:DashboardChartDashboardQueryInput",
                    "description": "Input parameters for the query, such as time windows.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nname of the query.\n"
                },
                "query": {
                    "type": "string",
                    "description": "The raw query string.\n"
                }
            },
            "type": "object",
            "required": [
                "query"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "etag",
                        "name",
                        "query"
                    ]
                }
            }
        },
        "gcp:chronicle/DashboardChartDashboardQueryInput:DashboardChartDashboardQueryInput": {
            "properties": {
                "relativeTime": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardQueryInputRelativeTime:DashboardChartDashboardQueryInputRelativeTime",
                    "description": "Relative time range.\nStructure is documented below.\n"
                },
                "timeWindow": {
                    "$ref": "#/types/gcp:chronicle/DashboardChartDashboardQueryInputTimeWindow:DashboardChartDashboardQueryInputTimeWindow",
                    "description": "Specific start and end times.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DashboardChartDashboardQueryInputRelativeTime:DashboardChartDashboardQueryInputRelativeTime": {
            "properties": {
                "startTimeVal": {
                    "type": "string",
                    "description": "(Required)\n"
                },
                "timeUnit": {
                    "type": "string",
                    "description": "The time unit for the relative range.\nPossible values are: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`.\n"
                }
            },
            "type": "object",
            "required": [
                "startTimeVal",
                "timeUnit"
            ]
        },
        "gcp:chronicle/DashboardChartDashboardQueryInputTimeWindow:DashboardChartDashboardQueryInputTimeWindow": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "(Optional)\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/DataAccessScopeAllowedDataAccessLabel:DataAccessScopeAllowedDataAccessLabel": {
            "properties": {
                "assetNamespace": {
                    "type": "string",
                    "description": "The asset namespace configured in the forwarder\nof the customer's events.\n"
                },
                "dataAccessLabel": {
                    "type": "string",
                    "description": "The name of the data access label.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The display name of the label.\nData access label and log types's name\nwill match the display name of the resource.\nThe asset namespace will match the namespace itself.\nThe ingestion key value pair will match the key of the tuple.\n"
                },
                "ingestionLabel": {
                    "$ref": "#/types/gcp:chronicle/DataAccessScopeAllowedDataAccessLabelIngestionLabel:DataAccessScopeAllowedDataAccessLabelIngestionLabel",
                    "description": "Representation of an ingestion label type.\nStructure is documented below.\n"
                },
                "logType": {
                    "type": "string",
                    "description": "The name of the log type.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:chronicle/DataAccessScopeAllowedDataAccessLabelIngestionLabel:DataAccessScopeAllowedDataAccessLabelIngestionLabel": {
            "properties": {
                "ingestionLabelKey": {
                    "type": "string",
                    "description": "Required. The key of the ingestion label. Always required.\n"
                },
                "ingestionLabelValue": {
                    "type": "string",
                    "description": "Optional. The value of the ingestion label. Optional. An object\nwith no provided value and some key provided would match\nagainst the given key and ANY value.\n"
                }
            },
            "type": "object",
            "required": [
                "ingestionLabelKey"
            ]
        },
        "gcp:chronicle/DataAccessScopeDeniedDataAccessLabel:DataAccessScopeDeniedDataAccessLabel": {
            "properties": {
                "assetNamespace": {
                    "type": "string",
                    "description": "The asset namespace configured in the forwarder\nof the customer's events.\n"
                },
                "dataAccessLabel": {
                    "type": "string",
                    "description": "The name of the data access label.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The display name of the label.\nData access label and log types's name\nwill match the display name of the resource.\nThe asset namespace will match the namespace itself.\nThe ingestion key value pair will match the key of the tuple.\n"
                },
                "ingestionLabel": {
                    "$ref": "#/types/gcp:chronicle/DataAccessScopeDeniedDataAccessLabelIngestionLabel:DataAccessScopeDeniedDataAccessLabelIngestionLabel",
                    "description": "Representation of an ingestion label type.\nStructure is documented below.\n"
                },
                "logType": {
                    "type": "string",
                    "description": "The name of the log type.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "displayName"
                    ]
                }
            }
        },
        "gcp:chronicle/DataAccessScopeDeniedDataAccessLabelIngestionLabel:DataAccessScopeDeniedDataAccessLabelIngestionLabel": {
            "properties": {
                "ingestionLabelKey": {
                    "type": "string",
                    "description": "Required. The key of the ingestion label. Always required.\n"
                },
                "ingestionLabelValue": {
                    "type": "string",
                    "description": "Optional. The value of the ingestion label. Optional. An object\nwith no provided value and some key provided would match\nagainst the given key and ANY value.\n"
                }
            },
            "type": "object",
            "required": [
                "ingestionLabelKey"
            ]
        },
        "gcp:chronicle/DataTableColumnInfo:DataTableColumnInfo": {
            "properties": {
                "columnIndex": {
                    "type": "integer",
                    "description": "Column Index. 0,1,2...\n",
                    "willReplaceOnChanges": true
                },
                "columnType": {
                    "type": "string",
                    "description": "Column type can be STRING, CIDR (Ex- 10.1.1.0/24), REGEX\nPossible values:\nSTRING\nREGEX\nCIDR\nNUMBER\nPossible values are: `STRING`, `REGEX`, `CIDR`, `NUMBER`.\n",
                    "willReplaceOnChanges": true
                },
                "keyColumn": {
                    "type": "boolean",
                    "description": "Whether to include this column in the calculation of the row ID.\nIf no columns have\u003cspan pulumi-lang-nodejs=\" keyColumn \" pulumi-lang-dotnet=\" KeyColumn \" pulumi-lang-go=\" keyColumn \" pulumi-lang-python=\" key_column \" pulumi-lang-yaml=\" keyColumn \" pulumi-lang-java=\" keyColumn \" pulumi-lang-hcl=\" key_column \"\u003e keyColumn \u003c/span\u003e= true, all columns will be included in the\ncalculation of the row ID.\n",
                    "willReplaceOnChanges": true
                },
                "mappedColumnPath": {
                    "type": "string",
                    "description": "Entity proto field path that the column is mapped to\n",
                    "willReplaceOnChanges": true
                },
                "originalColumn": {
                    "type": "string",
                    "description": "Original column name of the Data Table (present in the CSV header in case\nof creation of data tables using file uploads). It must satisfy the\nfollowing requirements:\n- Starts with letter.\n- Contains only letters, numbers and underscore.\n- Must be unique and has length \u003c 256\n",
                    "willReplaceOnChanges": true
                },
                "repeatedValues": {
                    "type": "boolean",
                    "description": "Whether the column is a repeated values column.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "columnIndex",
                "originalColumn"
            ]
        },
        "gcp:chronicle/DataTableScopeInfo:DataTableScopeInfo": {
            "properties": {
                "dataAccessScopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Contains the list of scope names of the data table. If the list is empty,\nthe data table is treated as unscoped. The scope names should be\nfull resource names and should be of the format:\n\"projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{scope_name}\"\n"
                }
            },
            "type": "object",
            "required": [
                "dataAccessScopes"
            ]
        },
        "gcp:chronicle/FeedDetails:FeedDetails": {
            "properties": {
                "amazonKinesisFirehoseSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonKinesisFirehoseSettings:FeedDetailsAmazonKinesisFirehoseSettings",
                    "description": "Settings required by Amazon Kinesis Firehose Feeds(HTTP-Push).\n"
                },
                "amazonS3Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonS3Settings:FeedDetailsAmazonS3Settings",
                    "description": "Amazon S3 settings.\nStructure is documented below.\n"
                },
                "amazonS3V2Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonS3V2Settings:FeedDetailsAmazonS3V2Settings",
                    "description": "AmazonS3V2Settings is the settings proto for Omniflow S3 feeds.\nStructure is documented below.\n"
                },
                "amazonSqsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonSqsSettings:FeedDetailsAmazonSqsSettings",
                    "description": "Amazon SQS settings.\nStructure is documented below.\n"
                },
                "amazonSqsV2Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonSqsV2Settings:FeedDetailsAmazonSqsV2Settings",
                    "description": "AmazonSQSV2Settings is the settings proto for Omniflow SQS feeds.\nStructure is documented below.\n"
                },
                "anomaliSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAnomaliSettings:FeedDetailsAnomaliSettings",
                    "description": "Anomali IOC settings.\nStructure is documented below.\n"
                },
                "assetNamespace": {
                    "type": "string",
                    "description": "The asset namespace to apply to all logs ingested through this feed.\n"
                },
                "awsEc2HostsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAwsEc2HostsSettings:FeedDetailsAwsEc2HostsSettings",
                    "description": "AWS EC2 Hosts Settings.\nStructure is documented below.\n"
                },
                "awsEc2InstancesSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAwsEc2InstancesSettings:FeedDetailsAwsEc2InstancesSettings",
                    "description": "AWS EC2 Instances Settings.\nStructure is documented below.\n"
                },
                "awsEc2VpcsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAwsEc2VpcsSettings:FeedDetailsAwsEc2VpcsSettings",
                    "description": "AWS EC2 Vpcs Settings.\nStructure is documented below.\n"
                },
                "awsIamSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAwsIamSettings:FeedDetailsAwsIamSettings",
                    "description": "AWSIAMSettings contains details needed for creating an AWS IAM feed.\nStructure is documented below.\n"
                },
                "azureAdAuditSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureAdAuditSettings:FeedDetailsAzureAdAuditSettings",
                    "description": "Azure AD Audit settings.\nStructure is documented below.\n"
                },
                "azureAdContextSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureAdContextSettings:FeedDetailsAzureAdContextSettings",
                    "description": "Azure AD Context settings.\nStructure is documented below.\n"
                },
                "azureAdSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureAdSettings:FeedDetailsAzureAdSettings",
                    "description": "Azure AD settings.\nStructure is documented below.\n"
                },
                "azureBlobStoreSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureBlobStoreSettings:FeedDetailsAzureBlobStoreSettings",
                    "description": "Azure Blob Storage settings.\nStructure is documented below.\n"
                },
                "azureBlobStoreV2Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureBlobStoreV2Settings:FeedDetailsAzureBlobStoreV2Settings",
                    "description": "AzureBlobStoreV2Settings is the settings proto for Azure Blob Storage feeds.\nStructure is documented below.\n"
                },
                "azureEventHubSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureEventHubSettings:FeedDetailsAzureEventHubSettings",
                    "description": "Settings required by Azure Event Hub Feeds.\nStructure is documented below.\n"
                },
                "azureMdmIntuneSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureMdmIntuneSettings:FeedDetailsAzureMdmIntuneSettings",
                    "description": "Azure MDM Intune settings.\nStructure is documented below.\n"
                },
                "cloudPassageSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsCloudPassageSettings:FeedDetailsCloudPassageSettings",
                    "description": "CloudPassage settings.\nStructure is documented below.\n"
                },
                "cortexXdrSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsCortexXdrSettings:FeedDetailsCortexXdrSettings",
                    "description": "PAN Cortex XDR settings.\nStructure is documented below.\n"
                },
                "crowdstrikeAlertsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsCrowdstrikeAlertsSettings:FeedDetailsCrowdstrikeAlertsSettings",
                    "description": "CrowdStrike Alerts settings.\nStructure is documented below.\n"
                },
                "crowdstrikeDetectsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsCrowdstrikeDetectsSettings:FeedDetailsCrowdstrikeDetectsSettings",
                    "description": "CrowdStrike Detects settings.\nStructure is documented below.\n"
                },
                "dummyLogTypeSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsDummyLogTypeSettings:FeedDetailsDummyLogTypeSettings",
                    "description": "Settings required by Feeds of DummyLogType(used for testing purposes).\nStructure is documented below.\n"
                },
                "duoAuthSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsDuoAuthSettings:FeedDetailsDuoAuthSettings",
                    "description": "Duo Authentication settings.\nStructure is documented below.\n"
                },
                "duoUserContextSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsDuoUserContextSettings:FeedDetailsDuoUserContextSettings",
                    "description": "Duo User Context settings.\nStructure is documented below.\n"
                },
                "feedSourceType": {
                    "type": "string",
                    "description": "Source Type of the feed.\nPossible values:\nGOOGLE_CLOUD_STORAGE\nHTTP\nSFTP\nAMAZON_S3\nAZURE_BLOBSTORE\nAPI\nAMAZON_SQS\nPUBSUB\nAMAZON_KINESIS_FIREHOSE\nWEBHOOK\nHTTPS_PUSH_GOOGLE_CLOUD_PUBSUB\nHTTPS_PUSH_AMAZON_KINESIS_FIREHOSE\nHTTPS_PUSH_WEBHOOK\nAZURE_EVENT_HUB\nGOOGLE_CLOUD_STORAGE_V2\nAMAZON_S3_V2\nAMAZON_SQS_V2\nAZURE_BLOBSTORE_V2\nGOOGLE_CLOUD_STORAGE_EVENT_DRIVEN\nPossible values are: `GOOGLE_CLOUD_STORAGE`, `HTTP`, `SFTP`, `AMAZON_S3`, `AZURE_BLOBSTORE`, `API`, `AMAZON_SQS`, `PUBSUB`, `AMAZON_KINESIS_FIREHOSE`, `WEBHOOK`, `HTTPS_PUSH_GOOGLE_CLOUD_PUBSUB`, `HTTPS_PUSH_AMAZON_KINESIS_FIREHOSE`, `HTTPS_PUSH_WEBHOOK`, `AZURE_EVENT_HUB`, `GOOGLE_CLOUD_STORAGE_V2`, `AMAZON_S3_V2`, `AMAZON_SQS_V2`, `AZURE_BLOBSTORE_V2`, `GOOGLE_CLOUD_STORAGE_EVENT_DRIVEN`.\n",
                    "willReplaceOnChanges": true
                },
                "foxItStixSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsFoxItStixSettings:FeedDetailsFoxItStixSettings",
                    "description": "Fox-IT STIX settings.\nStructure is documented below.\n"
                },
                "gcsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGcsSettings:FeedDetailsGcsSettings",
                    "description": "Google Cloud Storage settings.\nStructure is documented below.\n"
                },
                "gcsV2Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGcsV2Settings:FeedDetailsGcsV2Settings",
                    "description": "GoogleCloudStorageV2Settings is the settings proto for Omniflow Google Cloud\nStorage feeds.\nStructure is documented below.\n"
                },
                "googleCloudIdentityDeviceUsersSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudIdentityDeviceUsersSettings:FeedDetailsGoogleCloudIdentityDeviceUsersSettings",
                    "description": "Google Cloud Identity Device Users settings.\nStructure is documented below.\n"
                },
                "googleCloudIdentityDevicesSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudIdentityDevicesSettings:FeedDetailsGoogleCloudIdentityDevicesSettings",
                    "description": "Google Cloud Identity Devices settings.\nStructure is documented below.\n"
                },
                "googleCloudStorageEventDrivenSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudStorageEventDrivenSettings:FeedDetailsGoogleCloudStorageEventDrivenSettings",
                    "description": "GoogleCloudStorageEventDrivenSettings is the settings proto for Omniflow\nGoogle Cloud Storage feeds driven by pubsub events.\nStructure is documented below.\n"
                },
                "httpSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsHttpSettings:FeedDetailsHttpSettings",
                    "description": "HTTP settings.\nStructure is documented below.\n"
                },
                "httpsPushAmazonKinesisFirehoseSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsHttpsPushAmazonKinesisFirehoseSettings:FeedDetailsHttpsPushAmazonKinesisFirehoseSettings",
                    "description": "Settings required by Amazon Kinesis Firehose Feeds(HTTPS-Push V2).\nStructure is documented below.\n"
                },
                "httpsPushGoogleCloudPubsubSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsHttpsPushGoogleCloudPubsubSettings:FeedDetailsHttpsPushGoogleCloudPubsubSettings",
                    "description": "Settings required by Google Cloud Platform Pub/Sub Feeds(HTTPS-Push V2).\nStructure is documented below.\n"
                },
                "httpsPushWebhookSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsHttpsPushWebhookSettings:FeedDetailsHttpsPushWebhookSettings",
                    "description": "Settings required by Webhook Feeds(HTTPS-Push V2).\nStructure is documented below.\n"
                },
                "impervaWafSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsImpervaWafSettings:FeedDetailsImpervaWafSettings",
                    "description": "Imperva WAF settings.\nStructure is documented below.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The ingestion metadata labels to apply to all logs ingested through this\nfeed, and the resulting normalized data.\n"
                },
                "logType": {
                    "type": "string",
                    "description": "LogType.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/logTypes/{log_type}\n"
                },
                "mandiantIocSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMandiantIocSettings:FeedDetailsMandiantIocSettings",
                    "description": "Mandiant IOC settings.\nStructure is documented below.\n"
                },
                "microsoftGraphAlertSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMicrosoftGraphAlertSettings:FeedDetailsMicrosoftGraphAlertSettings",
                    "description": "Microsoft Graph Alert settings.\nStructure is documented below.\n"
                },
                "microsoftSecurityCenterAlertSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMicrosoftSecurityCenterAlertSettings:FeedDetailsMicrosoftSecurityCenterAlertSettings",
                    "description": "Microsoft Security Center alert settings.\nStructure is documented below.\n"
                },
                "mimecastMailSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMimecastMailSettings:FeedDetailsMimecastMailSettings",
                    "description": "Mimecast Mail settings.\nStructure is documented below.\n"
                },
                "mimecastMailV2Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMimecastMailV2Settings:FeedDetailsMimecastMailV2Settings",
                    "description": "Mimecast Mail V2 Settings.\nStructure is documented below.\n"
                },
                "netskopeAlertSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsNetskopeAlertSettings:FeedDetailsNetskopeAlertSettings",
                    "description": "Netskope Alert settings.\nStructure is documented below.\n"
                },
                "netskopeAlertV2Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsNetskopeAlertV2Settings:FeedDetailsNetskopeAlertV2Settings",
                    "description": "Netskope Alert V2 settings.\nStructure is documented below.\n"
                },
                "office365Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsOffice365Settings:FeedDetailsOffice365Settings",
                    "description": "Office 365 settings.\nStructure is documented below.\n"
                },
                "oktaSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsOktaSettings:FeedDetailsOktaSettings",
                    "description": "Okta settings.\nStructure is documented below.\n"
                },
                "oktaUserContextSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsOktaUserContextSettings:FeedDetailsOktaUserContextSettings",
                    "description": "Okta user context settings.\nStructure is documented below.\n"
                },
                "panIocSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsPanIocSettings:FeedDetailsPanIocSettings",
                    "description": "PAN IOC settings.\nStructure is documented below.\n"
                },
                "panPrismaCloudSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsPanPrismaCloudSettings:FeedDetailsPanPrismaCloudSettings",
                    "description": "PAN Prisma Cloud settings.\nStructure is documented below.\n"
                },
                "proofpointMailSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsProofpointMailSettings:FeedDetailsProofpointMailSettings",
                    "description": "Proofpoint Mail settings.\nStructure is documented below.\n"
                },
                "proofpointOnDemandSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsProofpointOnDemandSettings:FeedDetailsProofpointOnDemandSettings",
                    "description": "Proofpoint On-demand settings.\nStructure is documented below.\n"
                },
                "pubsubSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsPubsubSettings:FeedDetailsPubsubSettings",
                    "description": "Settings required by Google Cloud Pub/Sub Feeds(HTTP-Push).\nStructure is documented below.\n"
                },
                "qualysScanSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsQualysScanSettings:FeedDetailsQualysScanSettings",
                    "description": "Qualys Scan settings.\nStructure is documented below.\n"
                },
                "qualysVmSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsQualysVmSettings:FeedDetailsQualysVmSettings",
                    "description": "Qualys VM settings.\nStructure is documented below.\n"
                },
                "rapid7InsightSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsRapid7InsightSettings:FeedDetailsRapid7InsightSettings",
                    "description": "Rapid7 Insight settings.\nStructure is documented below.\n"
                },
                "recordedFutureIocSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsRecordedFutureIocSettings:FeedDetailsRecordedFutureIocSettings",
                    "description": "Recorded Future IOC settings.\nStructure is documented below.\n"
                },
                "rhIsacIocSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsRhIsacIocSettings:FeedDetailsRhIsacIocSettings",
                    "description": "RH-ISAC settings.\nStructure is documented below.\n"
                },
                "salesforceSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSalesforceSettings:FeedDetailsSalesforceSettings",
                    "description": "Salesforce settings.\nStructure is documented below.\n"
                },
                "sentineloneAlertSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSentineloneAlertSettings:FeedDetailsSentineloneAlertSettings",
                    "description": "SentinelOne Alert settings.\nStructure is documented below.\n"
                },
                "serviceNowCmdbSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsServiceNowCmdbSettings:FeedDetailsServiceNowCmdbSettings",
                    "description": "ServiceNow CMDB settings.\nStructure is documented below.\n"
                },
                "sftpSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSftpSettings:FeedDetailsSftpSettings",
                    "description": "SFTP settings.\nStructure is documented below.\n"
                },
                "stsMigrationReadiness": {
                    "type": "string",
                    "description": "(Output)\nThe status of the feed's migration to STS.\nPossible values:\nNOT_READY\nREADY\nAUTH_RECONFIG_REQUIRED\n"
                },
                "symantecEventExportSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSymantecEventExportSettings:FeedDetailsSymantecEventExportSettings",
                    "description": "Symantec Event Export settings.\nStructure is documented below.\n"
                },
                "thinkstCanarySettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsThinkstCanarySettings:FeedDetailsThinkstCanarySettings",
                    "description": "Thinkst Canary settings.\nStructure is documented below.\n"
                },
                "threatConnectIocSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsThreatConnectIocSettings:FeedDetailsThreatConnectIocSettings",
                    "description": "ThreatConnect IOC Settings.\nStructure is documented below.\n"
                },
                "threatConnectIocV3Settings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsThreatConnectIocV3Settings:FeedDetailsThreatConnectIocV3Settings",
                    "description": "ThreatConnectIoCV3Settings\nStructure is documented below.\n"
                },
                "trellixHxAlertsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxAlertsSettings:FeedDetailsTrellixHxAlertsSettings",
                    "description": "Settings required by Feeds of TrellixHxAlerts.\nStructure is documented below.\n"
                },
                "trellixHxBulkAcqsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxBulkAcqsSettings:FeedDetailsTrellixHxBulkAcqsSettings",
                    "description": "Settings required by Feeds of TrellixHxBulkAcqs.\nStructure is documented below.\n"
                },
                "trellixHxHostsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxHostsSettings:FeedDetailsTrellixHxHostsSettings",
                    "description": "Settings required by Feeds of TrellixHxHosts.\nStructure is documented below.\n"
                },
                "webhookSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWebhookSettings:FeedDetailsWebhookSettings",
                    "description": "Settings required by Webhook Feeds(HTTP-Push).\n"
                },
                "workdaySettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkdaySettings:FeedDetailsWorkdaySettings",
                    "description": "Workday settings.\nStructure is documented below.\n"
                },
                "workspaceActivitySettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceActivitySettings:FeedDetailsWorkspaceActivitySettings",
                    "description": "Workspace Activity settings.\nStructure is documented below.\n"
                },
                "workspaceAlertsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceAlertsSettings:FeedDetailsWorkspaceAlertsSettings",
                    "description": "Workspace Alert settings.\nStructure is documented below.\n"
                },
                "workspaceChromeOsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceChromeOsSettings:FeedDetailsWorkspaceChromeOsSettings",
                    "description": "Workspace Chrome OS settings.\nStructure is documented below.\n"
                },
                "workspaceGroupsSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceGroupsSettings:FeedDetailsWorkspaceGroupsSettings",
                    "description": "Workspace Groups settings.\nStructure is documented below.\n"
                },
                "workspaceMobileSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceMobileSettings:FeedDetailsWorkspaceMobileSettings",
                    "description": "Workspace Mobile settings.\nStructure is documented below.\n"
                },
                "workspacePrivilegesSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspacePrivilegesSettings:FeedDetailsWorkspacePrivilegesSettings",
                    "description": "Workspace Privileges settings.\nStructure is documented below.\n"
                },
                "workspaceUsersSettings": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceUsersSettings:FeedDetailsWorkspaceUsersSettings",
                    "description": "Workspace Users settings.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsAmazonS3Settings\"\" pulumi-lang-dotnet=\"\"NestedDetailsAmazonS3Settings\"\" pulumi-lang-go=\"\"nestedDetailsAmazonS3Settings\"\" pulumi-lang-python=\"\"nested_details_amazon_s3_settings\"\" pulumi-lang-yaml=\"\"nestedDetailsAmazonS3Settings\"\" pulumi-lang-java=\"\"nestedDetailsAmazonS3Settings\"\" pulumi-lang-hcl=\"\"nested_details_amazon_s3_settings\"\"\u003e\"nestedDetailsAmazonS3Settings\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`amazonS3Settings`\" pulumi-lang-dotnet=\"`AmazonS3Settings`\" pulumi-lang-go=\"`amazonS3Settings`\" pulumi-lang-python=\"`amazon_s3_settings`\" pulumi-lang-yaml=\"`amazonS3Settings`\" pulumi-lang-java=\"`amazonS3Settings`\" pulumi-lang-hcl=\"`amazon_s3_settings`\"\u003e`amazonS3Settings`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object",
            "required": [
                "logType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "logType",
                        "stsMigrationReadiness"
                    ]
                }
            }
        },
        "gcp:chronicle/FeedDetailsAmazonKinesisFirehoseSettings:FeedDetailsAmazonKinesisFirehoseSettings": {
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAmazonS3Settings:FeedDetailsAmazonS3Settings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonS3SettingsAuthentication:FeedDetailsAmazonS3SettingsAuthentication",
                    "description": "Amazon S3 auth.\n"
                },
                "s3Uri": {
                    "type": "string",
                    "description": "S3 URI.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nSOURCE_DELETION_NEVER\nSOURCE_DELETION_ON_SUCCESS\nSOURCE_DELETION_ON_SUCCESS_FILES_ONLY\n"
                },
                "sourceType": {
                    "type": "string",
                    "description": "Possible values:\nFILES\nFOLDERS\nFOLDERS_RECURSIVE\n"
                }
            },
            "type": "object",
            "required": [
                "s3Uri",
                "sourceDeletionOption",
                "sourceType"
            ]
        },
        "gcp:chronicle/FeedDetailsAmazonS3SettingsAuthentication:FeedDetailsAmazonS3SettingsAuthentication": {
            "properties": {
                "accessKeyId": {
                    "type": "string",
                    "description": "Access key ID.\n"
                },
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n"
                },
                "refreshUri": {
                    "type": "string",
                    "description": "Refresh URI. Used when using OAuth auth.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "region": {
                    "type": "string",
                    "description": "Possible values:\nUS_EAST_1\nUS_EAST_2\nUS_WEST_1\nUS_WEST_2\nUS_GOV_CLOUD\nUS_GOV_EAST_1\nEU_WEST_1\nEU_WEST_2\nEU_WEST_3\nEU_CENTRAL_1\nEU_NORTH_1\nEU_SOUTH_1\nAP_SOUTH_1\nAP_SOUTHEAST_1\nAP_SOUTHEAST_2\nAP_SOUTHEAST_3\nAP_NORTHEAST_1\nAP_NORTHEAST_2\nAP_NORTHEAST_3\nAP_EAST_1\nSA_EAST_1\nCN_NORTH_1\nCN_NORTHWEST_1\nCA_CENTRAL_1\nAF_SOUTH_1\nME_SOUTH_1\nAP_SOUTH_2\nAP_SOUTHEAST_4\nCA_WEST_1\nEU_SOUTH_2\nEU_CENTRAL_2\nIL_CENTRAL_1\nME_CENTRAL_1\n"
                },
                "secretAccessKey": {
                    "type": "string",
                    "description": "Secret access key.\n**Note**: This property is sensitive and will not be displayed in the plan.\n"
                }
            },
            "type": "object",
            "required": [
                "region"
            ]
        },
        "gcp:chronicle/FeedDetailsAmazonS3V2Settings:FeedDetailsAmazonS3V2Settings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonS3V2SettingsAuthentication:FeedDetailsAmazonS3V2SettingsAuthentication",
                    "description": "A message containing fields used to authenticate with Amazon S3.\n"
                },
                "chronicleServiceAccount": {
                    "type": "string",
                    "description": "SA that will read data, this is Storage Transfer Service SA of Customer's\nTenancy Project.\n"
                },
                "maxLookbackDays": {
                    "type": "integer",
                    "description": "Maximum File Age to ingest in days.\n"
                },
                "s3Uri": {
                    "type": "string",
                    "description": "S3 URI.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nNEVER\nON_SUCCESS\n"
                }
            },
            "type": "object",
            "required": [
                "authentication",
                "s3Uri"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "authentication",
                        "chronicleServiceAccount",
                        "s3Uri"
                    ]
                }
            }
        },
        "gcp:chronicle/FeedDetailsAmazonS3V2SettingsAuthentication:FeedDetailsAmazonS3V2SettingsAuthentication": {
            "properties": {
                "accessKeySecretAuth": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonS3V2SettingsAuthenticationAccessKeySecretAuth:FeedDetailsAmazonS3V2SettingsAuthenticationAccessKeySecretAuth",
                    "description": "S3 V2 access key and secret auth.\nStructure is documented below.\n"
                },
                "awsIamRoleAuth": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonS3V2SettingsAuthenticationAwsIamRoleAuth:FeedDetailsAmazonS3V2SettingsAuthenticationAwsIamRoleAuth",
                    "description": "AWS IAM Role Auth for SQS V2.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAmazonS3V2SettingsAuthenticationAccessKeySecretAuth:FeedDetailsAmazonS3V2SettingsAuthenticationAccessKeySecretAuth": {
            "properties": {
                "accessKeyId": {
                    "type": "string",
                    "description": "Access Key ID for an AWS account (a 20-character, alphanumeric string).\n"
                },
                "secretAccessKey": {
                    "type": "string",
                    "description": "Secret Access Key for an AWS account (a 40-character string).\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "accessKeyId",
                "secretAccessKey"
            ]
        },
        "gcp:chronicle/FeedDetailsAmazonS3V2SettingsAuthenticationAwsIamRoleAuth:FeedDetailsAmazonS3V2SettingsAuthenticationAwsIamRoleAuth": {
            "properties": {
                "awsIamRoleArn": {
                    "type": "string",
                    "description": "AWS IAM Role for Identity Federation.\n"
                },
                "subjectId": {
                    "type": "string",
                    "description": "Subject ID to use for SQS.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-dotnet=\"\"NestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-go=\"\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-python=\"\"nested_details_amazon_sqs_v2_settings_authentication_sqs_v2_access_key_secret_auth\"\" pulumi-lang-yaml=\"\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-java=\"\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-hcl=\"\"nested_details_amazon_sqs_v2_settings_authentication_sqs_v2_access_key_secret_auth\"\"\u003e\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`sqsV2AccessKeySecretAuth`\" pulumi-lang-dotnet=\"`SqsV2AccessKeySecretAuth`\" pulumi-lang-go=\"`sqsV2AccessKeySecretAuth`\" pulumi-lang-python=\"`sqs_v2_access_key_secret_auth`\" pulumi-lang-yaml=\"`sqsV2AccessKeySecretAuth`\" pulumi-lang-java=\"`sqsV2AccessKeySecretAuth`\" pulumi-lang-hcl=\"`sqs_v2_access_key_secret_auth`\"\u003e`sqsV2AccessKeySecretAuth`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAmazonSqsSettings:FeedDetailsAmazonSqsSettings": {
            "properties": {
                "accountNumber": {
                    "type": "string",
                    "description": "Account number of the owner of the queue.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonSqsSettingsAuthentication:FeedDetailsAmazonSqsSettingsAuthentication",
                    "description": "Amazon SQS auth.\nStructure is documented below.\n"
                },
                "queue": {
                    "type": "string",
                    "description": "Name of the queue.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Possible values:\nUS_EAST_1\nUS_EAST_2\nUS_WEST_1\nUS_WEST_2\nUS_GOV_CLOUD\nUS_GOV_EAST_1\nEU_WEST_1\nEU_WEST_2\nEU_WEST_3\nEU_CENTRAL_1\nEU_NORTH_1\nEU_SOUTH_1\nAP_SOUTH_1\nAP_SOUTHEAST_1\nAP_SOUTHEAST_2\nAP_SOUTHEAST_3\nAP_NORTHEAST_1\nAP_NORTHEAST_2\nAP_NORTHEAST_3\nAP_EAST_1\nSA_EAST_1\nCN_NORTH_1\nCN_NORTHWEST_1\nCA_CENTRAL_1\nAF_SOUTH_1\nME_SOUTH_1\nAP_SOUTH_2\nAP_SOUTHEAST_4\nCA_WEST_1\nEU_SOUTH_2\nEU_CENTRAL_2\nIL_CENTRAL_1\nME_CENTRAL_1\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nSOURCE_DELETION_NEVER\nSOURCE_DELETION_ON_SUCCESS\nSOURCE_DELETION_ON_SUCCESS_FILES_ONLY\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAmazonSqsSettingsAuthentication:FeedDetailsAmazonSqsSettingsAuthentication": {
            "properties": {
                "additionalS3AccessKeySecretAuth": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth:FeedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth",
                    "description": "Additional S3 access key secret auth.\nStructure is documented below.\n"
                },
                "sqsAccessKeySecretAuth": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonSqsSettingsAuthenticationSqsAccessKeySecretAuth:FeedDetailsAmazonSqsSettingsAuthenticationSqsAccessKeySecretAuth",
                    "description": "Amazon SQS access key and secret auth.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth\"\" pulumi-lang-dotnet=\"\"NestedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth\"\" pulumi-lang-go=\"\"nestedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth\"\" pulumi-lang-python=\"\"nested_details_amazon_sqs_settings_authentication_additional_s3_access_key_secret_auth\"\" pulumi-lang-yaml=\"\"nestedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth\"\" pulumi-lang-java=\"\"nestedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth\"\" pulumi-lang-hcl=\"\"nested_details_amazon_sqs_settings_authentication_additional_s3_access_key_secret_auth\"\"\u003e\"nestedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`additionalS3AccessKeySecretAuth`\" pulumi-lang-dotnet=\"`AdditionalS3AccessKeySecretAuth`\" pulumi-lang-go=\"`additionalS3AccessKeySecretAuth`\" pulumi-lang-python=\"`additional_s3_access_key_secret_auth`\" pulumi-lang-yaml=\"`additionalS3AccessKeySecretAuth`\" pulumi-lang-java=\"`additionalS3AccessKeySecretAuth`\" pulumi-lang-hcl=\"`additional_s3_access_key_secret_auth`\"\u003e`additionalS3AccessKeySecretAuth`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth:FeedDetailsAmazonSqsSettingsAuthenticationAdditionalS3AccessKeySecretAuth": {
            "properties": {
                "accessKeyId": {
                    "type": "string",
                    "description": "Access key ID.\n"
                },
                "secretAccessKey": {
                    "type": "string",
                    "description": "Secret access key.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAmazonSqsSettingsAuthenticationSqsAccessKeySecretAuth:FeedDetailsAmazonSqsSettingsAuthenticationSqsAccessKeySecretAuth": {
            "properties": {
                "accessKeyId": {
                    "type": "string",
                    "description": "Access key ID.\n"
                },
                "secretAccessKey": {
                    "type": "string",
                    "description": "Secret access key.\n**Note**: This property is sensitive and will not be displayed in the plan.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsAmazonSqsV2Settings\"\" pulumi-lang-dotnet=\"\"NestedDetailsAmazonSqsV2Settings\"\" pulumi-lang-go=\"\"nestedDetailsAmazonSqsV2Settings\"\" pulumi-lang-python=\"\"nested_details_amazon_sqs_v2_settings\"\" pulumi-lang-yaml=\"\"nestedDetailsAmazonSqsV2Settings\"\" pulumi-lang-java=\"\"nestedDetailsAmazonSqsV2Settings\"\" pulumi-lang-hcl=\"\"nested_details_amazon_sqs_v2_settings\"\"\u003e\"nestedDetailsAmazonSqsV2Settings\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`amazonSqsV2Settings`\" pulumi-lang-dotnet=\"`AmazonSqsV2Settings`\" pulumi-lang-go=\"`amazonSqsV2Settings`\" pulumi-lang-python=\"`amazon_sqs_v2_settings`\" pulumi-lang-yaml=\"`amazonSqsV2Settings`\" pulumi-lang-java=\"`amazonSqsV2Settings`\" pulumi-lang-hcl=\"`amazon_sqs_v2_settings`\"\u003e`amazonSqsV2Settings`\u003c/span\u003e block supports:\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAmazonSqsV2Settings:FeedDetailsAmazonSqsV2Settings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonSqsV2SettingsAuthentication:FeedDetailsAmazonSqsV2SettingsAuthentication",
                    "description": "A message containing fields used to authenticate with Amazon SQS.\n"
                },
                "chronicleServiceAccount": {
                    "type": "string",
                    "description": "SA that will read data, this is Storage Transfer Service SA of Customer's\nTenancy Project.\n"
                },
                "maxLookbackDays": {
                    "type": "integer",
                    "description": "Maximum File Age to ingest in days.\n"
                },
                "queue": {
                    "type": "string",
                    "description": "Amazon Resource Name(ARN) of the queue.\n"
                },
                "s3Uri": {
                    "type": "string",
                    "description": "S3 URI.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nNEVER\nON_SUCCESS\n"
                }
            },
            "type": "object",
            "required": [
                "authentication",
                "queue",
                "s3Uri"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "authentication",
                        "chronicleServiceAccount",
                        "queue",
                        "s3Uri"
                    ]
                }
            }
        },
        "gcp:chronicle/FeedDetailsAmazonSqsV2SettingsAuthentication:FeedDetailsAmazonSqsV2SettingsAuthentication": {
            "properties": {
                "awsIamRoleAuth": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonSqsV2SettingsAuthenticationAwsIamRoleAuth:FeedDetailsAmazonSqsV2SettingsAuthenticationAwsIamRoleAuth",
                    "description": "AWS IAM Role Auth for SQS V2.\nStructure is documented below.\n"
                },
                "sqsV2AccessKeySecretAuth": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth:FeedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth",
                    "description": "SQS V2 access key and secret auth.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "awsIamRoleAuth",
                "sqsV2AccessKeySecretAuth"
            ]
        },
        "gcp:chronicle/FeedDetailsAmazonSqsV2SettingsAuthenticationAwsIamRoleAuth:FeedDetailsAmazonSqsV2SettingsAuthenticationAwsIamRoleAuth": {
            "properties": {
                "awsIamRoleArn": {
                    "type": "string",
                    "description": "AWS IAM Role for Identity Federation.\n"
                },
                "subjectId": {
                    "type": "string",
                    "description": "Subject ID to use for SQS.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-dotnet=\"\"NestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-go=\"\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-python=\"\"nested_details_amazon_sqs_v2_settings_authentication_sqs_v2_access_key_secret_auth\"\" pulumi-lang-yaml=\"\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-java=\"\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\" pulumi-lang-hcl=\"\"nested_details_amazon_sqs_v2_settings_authentication_sqs_v2_access_key_secret_auth\"\"\u003e\"nestedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`sqsV2AccessKeySecretAuth`\" pulumi-lang-dotnet=\"`SqsV2AccessKeySecretAuth`\" pulumi-lang-go=\"`sqsV2AccessKeySecretAuth`\" pulumi-lang-python=\"`sqs_v2_access_key_secret_auth`\" pulumi-lang-yaml=\"`sqsV2AccessKeySecretAuth`\" pulumi-lang-java=\"`sqsV2AccessKeySecretAuth`\" pulumi-lang-hcl=\"`sqs_v2_access_key_secret_auth`\"\u003e`sqsV2AccessKeySecretAuth`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth:FeedDetailsAmazonSqsV2SettingsAuthenticationSqsV2AccessKeySecretAuth": {
            "properties": {
                "accessKeyId": {
                    "type": "string",
                    "description": "Access key ID of the S3 bucket.  Ex: AKIABCDEFGHIJKL.\n"
                },
                "secretAccessKey": {
                    "type": "string",
                    "description": "Secret access key to access the S3 bucket.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAnomaliSettings:FeedDetailsAnomaliSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAnomaliSettingsAuthentication:FeedDetailsAnomaliSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAnomaliSettingsAuthentication:FeedDetailsAnomaliSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAwsEc2HostsSettings:FeedDetailsAwsEc2HostsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAwsEc2HostsSettingsAuthentication:FeedDetailsAwsEc2HostsSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAwsEc2HostsSettingsAuthentication:FeedDetailsAwsEc2HostsSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAwsEc2InstancesSettings:FeedDetailsAwsEc2InstancesSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAwsEc2InstancesSettingsAuthentication:FeedDetailsAwsEc2InstancesSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAwsEc2InstancesSettingsAuthentication:FeedDetailsAwsEc2InstancesSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAwsEc2VpcsSettings:FeedDetailsAwsEc2VpcsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAwsEc2VpcsSettingsAuthentication:FeedDetailsAwsEc2VpcsSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAwsEc2VpcsSettingsAuthentication:FeedDetailsAwsEc2VpcsSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAwsIamSettings:FeedDetailsAwsIamSettings": {
            "properties": {
                "apiType": {
                    "type": "string",
                    "description": "Supported AWS IAM api type.\nPossible values:\nUSERS\nROLES\nGROUPS\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAwsIamSettingsAuthentication:FeedDetailsAwsIamSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAwsIamSettingsAuthentication:FeedDetailsAwsIamSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureAdAuditSettings:FeedDetailsAzureAdAuditSettings": {
            "properties": {
                "authEndpoint": {
                    "type": "string",
                    "description": "API Auth Endpoint.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureAdAuditSettingsAuthentication:FeedDetailsAzureAdAuditSettingsAuthentication",
                    "description": "Microsoft OAuth 2.0 client credentials grant.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureAdAuditSettingsAuthentication:FeedDetailsAzureAdAuditSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureAdContextSettings:FeedDetailsAzureAdContextSettings": {
            "properties": {
                "authEndpoint": {
                    "type": "string",
                    "description": "API Auth Endpoint.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureAdContextSettingsAuthentication:FeedDetailsAzureAdContextSettingsAuthentication",
                    "description": "Microsoft OAuth 2.0 client credentials grant.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "retrieveDevices": {
                    "type": "boolean",
                    "description": "Whether to retrieve device information in user context.\n"
                },
                "retrieveGroups": {
                    "type": "boolean",
                    "description": "Whether to retrieve group information in user context.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureAdContextSettingsAuthentication:FeedDetailsAzureAdContextSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureAdSettings:FeedDetailsAzureAdSettings": {
            "properties": {
                "authEndpoint": {
                    "type": "string",
                    "description": "API Auth Endpoint.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureAdSettingsAuthentication:FeedDetailsAzureAdSettingsAuthentication",
                    "description": "Microsoft OAuth 2.0 client credentials grant.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureAdSettingsAuthentication:FeedDetailsAzureAdSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureBlobStoreSettings:FeedDetailsAzureBlobStoreSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureBlobStoreSettingsAuthentication:FeedDetailsAzureBlobStoreSettingsAuthentication",
                    "description": "Azure auth.\nStructure is documented below.\n"
                },
                "azureUri": {
                    "type": "string",
                    "description": "Azure URI.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nSOURCE_DELETION_NEVER\nSOURCE_DELETION_ON_SUCCESS\nSOURCE_DELETION_ON_SUCCESS_FILES_ONLY\n"
                },
                "sourceType": {
                    "type": "string",
                    "description": "Possible values:\nFILES\nFOLDERS\nFOLDERS_RECURSIVE\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureBlobStoreSettingsAuthentication:FeedDetailsAzureBlobStoreSettingsAuthentication": {
            "properties": {
                "sasToken": {
                    "type": "string",
                    "description": "SAS Token.\n**Note**: This property is sensitive and will not be displayed in the plan.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-dotnet=\"\"NestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-go=\"\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-python=\"\"nested_details_azure_blob_store_v2_settings_authentication_azure_v2_workload_identity_federation\"\" pulumi-lang-yaml=\"\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-java=\"\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-hcl=\"\"nested_details_azure_blob_store_v2_settings_authentication_azure_v2_workload_identity_federation\"\"\u003e\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`azureV2WorkloadIdentityFederation`\" pulumi-lang-dotnet=\"`AzureV2WorkloadIdentityFederation`\" pulumi-lang-go=\"`azureV2WorkloadIdentityFederation`\" pulumi-lang-python=\"`azure_v2_workload_identity_federation`\" pulumi-lang-yaml=\"`azureV2WorkloadIdentityFederation`\" pulumi-lang-java=\"`azureV2WorkloadIdentityFederation`\" pulumi-lang-hcl=\"`azure_v2_workload_identity_federation`\"\u003e`azureV2WorkloadIdentityFederation`\u003c/span\u003e block supports:\n",
                    "secret": true
                },
                "sharedKey": {
                    "type": "string",
                    "description": "Shared Key.\n**Note**: This property is sensitive and will not be displayed in the plan.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsAzureBlobStoreV2Settings\"\" pulumi-lang-dotnet=\"\"NestedDetailsAzureBlobStoreV2Settings\"\" pulumi-lang-go=\"\"nestedDetailsAzureBlobStoreV2Settings\"\" pulumi-lang-python=\"\"nested_details_azure_blob_store_v2_settings\"\" pulumi-lang-yaml=\"\"nestedDetailsAzureBlobStoreV2Settings\"\" pulumi-lang-java=\"\"nestedDetailsAzureBlobStoreV2Settings\"\" pulumi-lang-hcl=\"\"nested_details_azure_blob_store_v2_settings\"\"\u003e\"nestedDetailsAzureBlobStoreV2Settings\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`azureBlobStoreV2Settings`\" pulumi-lang-dotnet=\"`AzureBlobStoreV2Settings`\" pulumi-lang-go=\"`azureBlobStoreV2Settings`\" pulumi-lang-python=\"`azure_blob_store_v2_settings`\" pulumi-lang-yaml=\"`azureBlobStoreV2Settings`\" pulumi-lang-java=\"`azureBlobStoreV2Settings`\" pulumi-lang-hcl=\"`azure_blob_store_v2_settings`\"\u003e`azureBlobStoreV2Settings`\u003c/span\u003e block supports:\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureBlobStoreV2Settings:FeedDetailsAzureBlobStoreV2Settings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureBlobStoreV2SettingsAuthentication:FeedDetailsAzureBlobStoreV2SettingsAuthentication",
                    "description": "A message containing fields used to authenticate with Azure Blob Storage.\n"
                },
                "azureUri": {
                    "type": "string",
                    "description": "Azure URI.\n"
                },
                "chronicleServiceAccount": {
                    "type": "string",
                    "description": "SA that will read data, this is Storage Transfer Service SA of Customer's\nTenancy Project.\n"
                },
                "maxLookbackDays": {
                    "type": "integer",
                    "description": "Maximum File Age to ingest in days.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nNEVER\nON_SUCCESS\n"
                }
            },
            "type": "object",
            "required": [
                "authentication",
                "azureUri"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "authentication",
                        "azureUri",
                        "chronicleServiceAccount"
                    ]
                }
            }
        },
        "gcp:chronicle/FeedDetailsAzureBlobStoreV2SettingsAuthentication:FeedDetailsAzureBlobStoreV2SettingsAuthentication": {
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "Access Key also known as shared key.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "azureV2WorkloadIdentityFederation": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation:FeedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation",
                    "description": "Azure V2 Workload Identity Federation.\nStructure is documented below.\n"
                },
                "sasToken": {
                    "type": "string",
                    "description": "SAS Token.\n**Note**: This property is sensitive and will not be displayed in the plan.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-dotnet=\"\"NestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-go=\"\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-python=\"\"nested_details_azure_blob_store_v2_settings_authentication_azure_v2_workload_identity_federation\"\" pulumi-lang-yaml=\"\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-java=\"\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\" pulumi-lang-hcl=\"\"nested_details_azure_blob_store_v2_settings_authentication_azure_v2_workload_identity_federation\"\"\u003e\"nestedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`azureV2WorkloadIdentityFederation`\" pulumi-lang-dotnet=\"`AzureV2WorkloadIdentityFederation`\" pulumi-lang-go=\"`azureV2WorkloadIdentityFederation`\" pulumi-lang-python=\"`azure_v2_workload_identity_federation`\" pulumi-lang-yaml=\"`azureV2WorkloadIdentityFederation`\" pulumi-lang-java=\"`azureV2WorkloadIdentityFederation`\" pulumi-lang-hcl=\"`azure_v2_workload_identity_federation`\"\u003e`azureV2WorkloadIdentityFederation`\u003c/span\u003e block supports:\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "accessKey",
                "azureV2WorkloadIdentityFederation",
                "sasToken"
            ]
        },
        "gcp:chronicle/FeedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation:FeedDetailsAzureBlobStoreV2SettingsAuthenticationAzureV2WorkloadIdentityFederation": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "OAuth client ID.\n"
                },
                "subjectId": {
                    "type": "string",
                    "description": "Subject ID of the Azure subscription.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "subjectId",
                "tenantId"
            ]
        },
        "gcp:chronicle/FeedDetailsAzureEventHubSettings:FeedDetailsAzureEventHubSettings": {
            "properties": {
                "azureSasToken": {
                    "type": "string",
                    "description": "SAS token\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "azureStorageConnectionString": {
                    "type": "string",
                    "description": "Blob store connection string for authentication.\n"
                },
                "azureStorageContainer": {
                    "type": "string",
                    "description": "Blob storage container name.\n"
                },
                "consumerGroup": {
                    "type": "string",
                    "description": "Event hub consumer group to read from.\n"
                },
                "eventHubConnectionString": {
                    "type": "string",
                    "description": "Event hub connection string for authentication.\n"
                },
                "eventHubNamespace": {
                    "type": "string",
                    "description": "(Output)\nEvent hub namespace\n"
                },
                "name": {
                    "type": "string",
                    "description": "Event hub to read from.\n"
                }
            },
            "type": "object",
            "required": [
                "consumerGroup",
                "eventHubConnectionString",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "consumerGroup",
                        "eventHubConnectionString",
                        "eventHubNamespace",
                        "name"
                    ]
                }
            }
        },
        "gcp:chronicle/FeedDetailsAzureMdmIntuneSettings:FeedDetailsAzureMdmIntuneSettings": {
            "properties": {
                "authEndpoint": {
                    "type": "string",
                    "description": "API Auth Endpoint.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsAzureMdmIntuneSettingsAuthentication:FeedDetailsAzureMdmIntuneSettingsAuthentication",
                    "description": "Microsoft OAuth 2.0 client credentials grant.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsAzureMdmIntuneSettingsAuthentication:FeedDetailsAzureMdmIntuneSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsCloudPassageSettings:FeedDetailsCloudPassageSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsCloudPassageSettingsAuthentication:FeedDetailsCloudPassageSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                },
                "eventTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Event types filter for the events API.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsCloudPassageSettingsAuthentication:FeedDetailsCloudPassageSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsCortexXdrSettings:FeedDetailsCortexXdrSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsCortexXdrSettingsAuthentication:FeedDetailsCortexXdrSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "API Endpoint.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsCortexXdrSettingsAuthentication:FeedDetailsCortexXdrSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsCortexXdrSettingsAuthenticationHeaderKeyValue:FeedDetailsCortexXdrSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsCortexXdrSettingsAuthenticationHeaderKeyValue:FeedDetailsCortexXdrSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsCrowdstrikeAlertsSettings:FeedDetailsCrowdstrikeAlertsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsCrowdstrikeAlertsSettingsAuthentication:FeedDetailsCrowdstrikeAlertsSettingsAuthentication",
                    "description": "OAuth 2.0 client credentials grant. See https://tools.ietf.org/html/rfc6749.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "ingestionType": {
                    "type": "string",
                    "description": "Ingestion Type.\nPossible values:\nBRING_ALL_ALERTS\nBRING_ONLY_NEW_ALERTS\n"
                }
            },
            "type": "object",
            "required": [
                "authentication",
                "hostname"
            ]
        },
        "gcp:chronicle/FeedDetailsCrowdstrikeAlertsSettingsAuthentication:FeedDetailsCrowdstrikeAlertsSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsCrowdstrikeDetectsSettings:FeedDetailsCrowdstrikeDetectsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsCrowdstrikeDetectsSettingsAuthentication:FeedDetailsCrowdstrikeDetectsSettingsAuthentication",
                    "description": "OAuth 2.0 client credentials grant. See https://tools.ietf.org/html/rfc6749.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "ingestionType": {
                    "type": "string",
                    "description": "Ingestion Type.\nPossible values:\nBRING_ONLY_NEW_DETECTIONS\nBRING_ALL_DETECTIONS\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsCrowdstrikeDetectsSettingsAuthentication:FeedDetailsCrowdstrikeDetectsSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsDummyLogTypeSettings:FeedDetailsDummyLogTypeSettings": {
            "properties": {
                "apiEndpoint": {
                    "type": "string",
                    "description": "Full API Endpoint.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsDummyLogTypeSettingsAuthentication:FeedDetailsDummyLogTypeSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsDummyLogTypeSettingsAuthentication:FeedDetailsDummyLogTypeSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsDummyLogTypeSettingsAuthenticationHeaderKeyValue:FeedDetailsDummyLogTypeSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsDummyLogTypeSettingsAuthenticationHeaderKeyValue:FeedDetailsDummyLogTypeSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsDuoAuthSettings:FeedDetailsDuoAuthSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsDuoAuthSettingsAuthentication:FeedDetailsDuoAuthSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsDuoAuthSettingsAuthentication:FeedDetailsDuoAuthSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsDuoUserContextSettings:FeedDetailsDuoUserContextSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsDuoUserContextSettingsAuthentication:FeedDetailsDuoUserContextSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsDuoUserContextSettingsAuthentication:FeedDetailsDuoUserContextSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsFoxItStixSettings:FeedDetailsFoxItStixSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsFoxItStixSettingsAuthentication:FeedDetailsFoxItStixSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                },
                "collection": {
                    "type": "string",
                    "description": "Collection available at the poll service.\n"
                },
                "pollServiceUri": {
                    "type": "string",
                    "description": "TAXII poll service URI.\n"
                },
                "ssl": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsFoxItStixSettingsSsl:FeedDetailsFoxItStixSettingsSsl",
                    "description": "An SSL client certificate keypair.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsFoxItStixSettingsAuthentication:FeedDetailsFoxItStixSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsFoxItStixSettingsSsl:FeedDetailsFoxItStixSettingsSsl": {
            "properties": {
                "encodedPrivateKey": {
                    "type": "string",
                    "description": "The encoded private key. The string should be a private key in PEM format,\nand should include the begin header and end footer lines. It may also\ninclude newlines.\nExample:\n-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: DES-EDE3-CBC,F23074E02CF47304\n\n-----END RSA PRIVATE KEY-----\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "sslCertificate": {
                    "type": "string",
                    "description": "The encoded SSL certificate. The string should be an SSL certificate in\nPEM format, and should include the begin header and end footer lines. It\nmay also include newlines.\nExample:\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGcsSettings:FeedDetailsGcsSettings": {
            "properties": {
                "bucketUri": {
                    "type": "string",
                    "description": "Google Cloud Storage Bucket URI for the feed.\n"
                },
                "chronicleServiceAccount": {
                    "type": "string",
                    "description": "(Output)\nSA that will read data, this is Storage Transfer Service SA of Customer's\nTenancy Project.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nNEVER\nON_SUCCESS\n"
                },
                "sourceType": {
                    "type": "string",
                    "description": "Possible values:\nFILES\nFOLDERS\nFOLDERS_RECURSIVE\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedDetailsGcsV2Settings\"\" pulumi-lang-dotnet=\"\"NestedDetailsGcsV2Settings\"\" pulumi-lang-go=\"\"nestedDetailsGcsV2Settings\"\" pulumi-lang-python=\"\"nested_details_gcs_v2_settings\"\" pulumi-lang-yaml=\"\"nestedDetailsGcsV2Settings\"\" pulumi-lang-java=\"\"nestedDetailsGcsV2Settings\"\" pulumi-lang-hcl=\"\"nested_details_gcs_v2_settings\"\"\u003e\"nestedDetailsGcsV2Settings\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`gcsV2Settings`\" pulumi-lang-dotnet=\"`GcsV2Settings`\" pulumi-lang-go=\"`gcsV2Settings`\" pulumi-lang-python=\"`gcs_v2_settings`\" pulumi-lang-yaml=\"`gcsV2Settings`\" pulumi-lang-java=\"`gcsV2Settings`\" pulumi-lang-hcl=\"`gcs_v2_settings`\"\u003e`gcsV2Settings`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "chronicleServiceAccount"
                    ]
                }
            }
        },
        "gcp:chronicle/FeedDetailsGcsV2Settings:FeedDetailsGcsV2Settings": {
            "properties": {
                "bucketUri": {
                    "type": "string",
                    "description": "Google Cloud Storage Bucket URI for the feed.\n"
                },
                "chronicleServiceAccount": {
                    "type": "string",
                    "description": "SA that will read data, this is Storage Transfer Service SA of Customer's\nTenancy Project.\n"
                },
                "maxLookbackDays": {
                    "type": "integer",
                    "description": "Maximum File Age to ingest in days.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nNEVER\nON_SUCCESS\n"
                }
            },
            "type": "object",
            "required": [
                "bucketUri"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "bucketUri",
                        "chronicleServiceAccount"
                    ]
                }
            }
        },
        "gcp:chronicle/FeedDetailsGoogleCloudIdentityDeviceUsersSettings:FeedDetailsGoogleCloudIdentityDeviceUsersSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthentication:FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthentication:FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthenticationClaims:FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthenticationRsCredentials:FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthenticationClaims:FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthenticationRsCredentials:FeedDetailsGoogleCloudIdentityDeviceUsersSettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGoogleCloudIdentityDevicesSettings:FeedDetailsGoogleCloudIdentityDevicesSettings": {
            "properties": {
                "apiVersion": {
                    "type": "string",
                    "description": "API Version\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudIdentityDevicesSettingsAuthentication:FeedDetailsGoogleCloudIdentityDevicesSettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGoogleCloudIdentityDevicesSettingsAuthentication:FeedDetailsGoogleCloudIdentityDevicesSettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudIdentityDevicesSettingsAuthenticationClaims:FeedDetailsGoogleCloudIdentityDevicesSettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsGoogleCloudIdentityDevicesSettingsAuthenticationRsCredentials:FeedDetailsGoogleCloudIdentityDevicesSettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGoogleCloudIdentityDevicesSettingsAuthenticationClaims:FeedDetailsGoogleCloudIdentityDevicesSettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGoogleCloudIdentityDevicesSettingsAuthenticationRsCredentials:FeedDetailsGoogleCloudIdentityDevicesSettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsGoogleCloudStorageEventDrivenSettings:FeedDetailsGoogleCloudStorageEventDrivenSettings": {
            "properties": {
                "bucketUri": {
                    "type": "string",
                    "description": "Google Cloud Storage Bucket URI for the feed.\n"
                },
                "chronicleServiceAccount": {
                    "type": "string",
                    "description": "(Output)\nSA that will read data, this is Storage Transfer Service SA of Customer's\nTenancy Project.\n"
                },
                "maxLookbackDays": {
                    "type": "integer",
                    "description": "Maximum File Age to ingest in days.\n"
                },
                "pubsubSubscription": {
                    "type": "string",
                    "description": "Subscription name for pubsub topic.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nNEVER\nON_SUCCESS\n"
                }
            },
            "type": "object",
            "required": [
                "bucketUri",
                "pubsubSubscription"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "bucketUri",
                        "chronicleServiceAccount",
                        "pubsubSubscription"
                    ]
                }
            }
        },
        "gcp:chronicle/FeedDetailsHttpSettings:FeedDetailsHttpSettings": {
            "properties": {
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nSOURCE_DELETION_NEVER\nSOURCE_DELETION_ON_SUCCESS\nSOURCE_DELETION_ON_SUCCESS_FILES_ONLY\n"
                },
                "sourceType": {
                    "type": "string",
                    "description": "Possible values:\nFILES\nFOLDERS\nFOLDERS_RECURSIVE\n"
                },
                "uri": {
                    "type": "string",
                    "description": "HTTP URI.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsHttpsPushAmazonKinesisFirehoseSettings:FeedDetailsHttpsPushAmazonKinesisFirehoseSettings": {
            "properties": {
                "splitDelimiter": {
                    "type": "string",
                    "description": "Delimiter to split on for the feed.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsHttpsPushGoogleCloudPubsubSettings:FeedDetailsHttpsPushGoogleCloudPubsubSettings": {
            "properties": {
                "splitDelimiter": {
                    "type": "string",
                    "description": "Delimiter to split on for the feed.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsHttpsPushWebhookSettings:FeedDetailsHttpsPushWebhookSettings": {
            "properties": {
                "splitDelimiter": {
                    "type": "string",
                    "description": "Delimiter to split on for the feed.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsImpervaWafSettings:FeedDetailsImpervaWafSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsImpervaWafSettingsAuthentication:FeedDetailsImpervaWafSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsImpervaWafSettingsAuthentication:FeedDetailsImpervaWafSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsImpervaWafSettingsAuthenticationHeaderKeyValue:FeedDetailsImpervaWafSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsImpervaWafSettingsAuthenticationHeaderKeyValue:FeedDetailsImpervaWafSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMandiantIocSettings:FeedDetailsMandiantIocSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMandiantIocSettingsAuthentication:FeedDetailsMandiantIocSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "time since when to start fetching the IOCs\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMandiantIocSettingsAuthentication:FeedDetailsMandiantIocSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsMandiantIocSettingsAuthenticationHeaderKeyValue:FeedDetailsMandiantIocSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMandiantIocSettingsAuthenticationHeaderKeyValue:FeedDetailsMandiantIocSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMicrosoftGraphAlertSettings:FeedDetailsMicrosoftGraphAlertSettings": {
            "properties": {
                "authEndpoint": {
                    "type": "string",
                    "description": "API Auth Endpoint.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMicrosoftGraphAlertSettingsAuthentication:FeedDetailsMicrosoftGraphAlertSettingsAuthentication",
                    "description": "Microsoft OAuth 2.0 client credentials grant.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMicrosoftGraphAlertSettingsAuthentication:FeedDetailsMicrosoftGraphAlertSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMicrosoftSecurityCenterAlertSettings:FeedDetailsMicrosoftSecurityCenterAlertSettings": {
            "properties": {
                "authEndpoint": {
                    "type": "string",
                    "description": "API Auth Endpoint.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMicrosoftSecurityCenterAlertSettingsAuthentication:FeedDetailsMicrosoftSecurityCenterAlertSettingsAuthentication",
                    "description": "Microsoft OAuth 2.0 client credentials grant.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "subscriptionId": {
                    "type": "string",
                    "description": "Subscription ID of the Microsoft security center alert settings alert.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMicrosoftSecurityCenterAlertSettingsAuthentication:FeedDetailsMicrosoftSecurityCenterAlertSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMimecastMailSettings:FeedDetailsMimecastMailSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMimecastMailSettingsAuthentication:FeedDetailsMimecastMailSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMimecastMailSettingsAuthentication:FeedDetailsMimecastMailSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsMimecastMailSettingsAuthenticationHeaderKeyValue:FeedDetailsMimecastMailSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMimecastMailSettingsAuthenticationHeaderKeyValue:FeedDetailsMimecastMailSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMimecastMailV2Settings:FeedDetailsMimecastMailV2Settings": {
            "properties": {
                "authCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsMimecastMailV2SettingsAuthCredentials:FeedDetailsMimecastMailV2SettingsAuthCredentials",
                    "description": "OAuth 2.0 client credentials grant. See https://tools.ietf.org/html/rfc6749.\nNEXT TAG: 3\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsMimecastMailV2SettingsAuthCredentials:FeedDetailsMimecastMailV2SettingsAuthCredentials": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsNetskopeAlertSettings:FeedDetailsNetskopeAlertSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsNetskopeAlertSettingsAuthentication:FeedDetailsNetskopeAlertSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "Content type.\n"
                },
                "feedname": {
                    "type": "string",
                    "description": "Feedname.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsNetskopeAlertSettingsAuthentication:FeedDetailsNetskopeAlertSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsNetskopeAlertSettingsAuthenticationHeaderKeyValue:FeedDetailsNetskopeAlertSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsNetskopeAlertSettingsAuthenticationHeaderKeyValue:FeedDetailsNetskopeAlertSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsNetskopeAlertV2Settings:FeedDetailsNetskopeAlertV2Settings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsNetskopeAlertV2SettingsAuthentication:FeedDetailsNetskopeAlertV2SettingsAuthentication",
                    "description": "HTTP header based authentication.\n"
                },
                "contentCategory": {
                    "type": "string",
                    "description": "Content Category.\n"
                },
                "contentTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Content type.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsNetskopeAlertV2SettingsAuthentication:FeedDetailsNetskopeAlertV2SettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsNetskopeAlertV2SettingsAuthenticationHeaderKeyValue:FeedDetailsNetskopeAlertV2SettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsNetskopeAlertV2SettingsAuthenticationHeaderKeyValue:FeedDetailsNetskopeAlertV2SettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsOffice365Settings:FeedDetailsOffice365Settings": {
            "properties": {
                "authEndpoint": {
                    "type": "string",
                    "description": "API Auth Endpoint.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsOffice365SettingsAuthentication:FeedDetailsOffice365SettingsAuthentication",
                    "description": "Microsoft OAuth 2.0 client credentials grant.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "Supported office 365 content type.\nPossible values:\nAUDIT_AZURE_ACTIVE_DIRECTORY\nAUDIT_EXCHANGE\nAUDIT_SHARE_POINT\nAUDIT_GENERAL\nDLP_ALL\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsOffice365SettingsAuthentication:FeedDetailsOffice365SettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsOktaSettings:FeedDetailsOktaSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsOktaSettingsAuthentication:FeedDetailsOktaSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsOktaSettingsAuthentication:FeedDetailsOktaSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsOktaSettingsAuthenticationHeaderKeyValue:FeedDetailsOktaSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsOktaSettingsAuthenticationHeaderKeyValue:FeedDetailsOktaSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsOktaUserContextSettings:FeedDetailsOktaUserContextSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsOktaUserContextSettingsAuthentication:FeedDetailsOktaUserContextSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "managerIdReferenceField": {
                    "type": "string",
                    "description": "Manager id reference field.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsOktaUserContextSettingsAuthentication:FeedDetailsOktaUserContextSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsOktaUserContextSettingsAuthenticationHeaderKeyValue:FeedDetailsOktaUserContextSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsOktaUserContextSettingsAuthenticationHeaderKeyValue:FeedDetailsOktaUserContextSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsPanIocSettings:FeedDetailsPanIocSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsPanIocSettingsAuthentication:FeedDetailsPanIocSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "feed": {
                    "type": "string",
                    "description": "PAN IOC feed name.\n"
                },
                "feedId": {
                    "type": "string",
                    "description": "PAN IOC feed ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsPanIocSettingsAuthentication:FeedDetailsPanIocSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsPanIocSettingsAuthenticationHeaderKeyValue:FeedDetailsPanIocSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsPanIocSettingsAuthenticationHeaderKeyValue:FeedDetailsPanIocSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsPanPrismaCloudSettings:FeedDetailsPanPrismaCloudSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsPanPrismaCloudSettingsAuthentication:FeedDetailsPanPrismaCloudSettingsAuthentication",
                    "description": "PAN Prisma Cloud auth.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsPanPrismaCloudSettingsAuthentication:FeedDetailsPanPrismaCloudSettingsAuthentication": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password. Used for username and password authentication.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsProofpointMailSettings:FeedDetailsProofpointMailSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsProofpointMailSettingsAuthentication:FeedDetailsProofpointMailSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsProofpointMailSettingsAuthentication:FeedDetailsProofpointMailSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsProofpointOnDemandSettings:FeedDetailsProofpointOnDemandSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsProofpointOnDemandSettingsAuthentication:FeedDetailsProofpointOnDemandSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "Cluster ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsProofpointOnDemandSettingsAuthentication:FeedDetailsProofpointOnDemandSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsProofpointOnDemandSettingsAuthenticationHeaderKeyValue:FeedDetailsProofpointOnDemandSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsProofpointOnDemandSettingsAuthenticationHeaderKeyValue:FeedDetailsProofpointOnDemandSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsPubsubSettings:FeedDetailsPubsubSettings": {
            "properties": {
                "googleServiceAccountEmail": {
                    "type": "string",
                    "description": "Google Service Account Email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsQualysScanSettings:FeedDetailsQualysScanSettings": {
            "properties": {
                "apiType": {
                    "type": "string",
                    "description": "Supported Qualys Scan api type.\nPossible values:\nSCAN_SUMMARY_OUTPUT\nSCAN_COMPLIANCE_OUTPUT\nSCAN_COMPLIANCE_CONTROL_OUTPUT\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsQualysScanSettingsAuthentication:FeedDetailsQualysScanSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsQualysScanSettingsAuthentication:FeedDetailsQualysScanSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsQualysVmSettings:FeedDetailsQualysVmSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsQualysVmSettingsAuthentication:FeedDetailsQualysVmSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsQualysVmSettingsAuthentication:FeedDetailsQualysVmSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsRapid7InsightSettings:FeedDetailsRapid7InsightSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsRapid7InsightSettingsAuthentication:FeedDetailsRapid7InsightSettingsAuthentication",
                    "description": "HTTP header based authentication.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Rapid7 API endpoint. Should be \"vulnerabilities\" or \"assets\".\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsRapid7InsightSettingsAuthentication:FeedDetailsRapid7InsightSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsRapid7InsightSettingsAuthenticationHeaderKeyValue:FeedDetailsRapid7InsightSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsRapid7InsightSettingsAuthenticationHeaderKeyValue:FeedDetailsRapid7InsightSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsRecordedFutureIocSettings:FeedDetailsRecordedFutureIocSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsRecordedFutureIocSettingsAuthentication:FeedDetailsRecordedFutureIocSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsRecordedFutureIocSettingsAuthentication:FeedDetailsRecordedFutureIocSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsRecordedFutureIocSettingsAuthenticationHeaderKeyValue:FeedDetailsRecordedFutureIocSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsRecordedFutureIocSettingsAuthenticationHeaderKeyValue:FeedDetailsRecordedFutureIocSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsRhIsacIocSettings:FeedDetailsRhIsacIocSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsRhIsacIocSettingsAuthentication:FeedDetailsRhIsacIocSettingsAuthentication",
                    "description": "OAuth 2.0 client credentials grant. See https://tools.ietf.org/html/rfc6749.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsRhIsacIocSettingsAuthentication:FeedDetailsRhIsacIocSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSalesforceSettings:FeedDetailsSalesforceSettings": {
            "properties": {
                "hostname": {
                    "type": "string",
                    "description": "API hostname.\n"
                },
                "oauthJwtCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSalesforceSettingsOauthJwtCredentials:FeedDetailsSalesforceSettingsOauthJwtCredentials",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                },
                "oauthPasswordGrantAuth": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSalesforceSettingsOauthPasswordGrantAuth:FeedDetailsSalesforceSettingsOauthPasswordGrantAuth",
                    "description": "OAuth 2.0 password grant. See https://tools.ietf.org/html/rfc6749.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSalesforceSettingsOauthJwtCredentials:FeedDetailsSalesforceSettingsOauthJwtCredentials": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSalesforceSettingsOauthJwtCredentialsClaims:FeedDetailsSalesforceSettingsOauthJwtCredentialsClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSalesforceSettingsOauthJwtCredentialsRsCredentials:FeedDetailsSalesforceSettingsOauthJwtCredentialsRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSalesforceSettingsOauthJwtCredentialsClaims:FeedDetailsSalesforceSettingsOauthJwtCredentialsClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSalesforceSettingsOauthJwtCredentialsRsCredentials:FeedDetailsSalesforceSettingsOauthJwtCredentialsRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSalesforceSettingsOauthPasswordGrantAuth:FeedDetailsSalesforceSettingsOauthPasswordGrantAuth": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client secret.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                },
                "user": {
                    "type": "string",
                    "description": "Username.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSentineloneAlertSettings:FeedDetailsSentineloneAlertSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSentineloneAlertSettingsAuthentication:FeedDetailsSentineloneAlertSettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "Hostname of SentinelOne alert settings.\n"
                },
                "initialStartTime": {
                    "type": "string",
                    "description": "initialStartTime from when to fetch the alerts\n"
                },
                "isAlertApiSubscribed": {
                    "type": "boolean",
                    "description": "Is the customer subscribed to Alerts Api\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSentineloneAlertSettingsAuthentication:FeedDetailsSentineloneAlertSettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsSentineloneAlertSettingsAuthenticationHeaderKeyValue:FeedDetailsSentineloneAlertSettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSentineloneAlertSettingsAuthenticationHeaderKeyValue:FeedDetailsSentineloneAlertSettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsServiceNowCmdbSettings:FeedDetailsServiceNowCmdbSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsServiceNowCmdbSettingsAuthentication:FeedDetailsServiceNowCmdbSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                },
                "feedname": {
                    "type": "string",
                    "description": "Feedname.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsServiceNowCmdbSettingsAuthentication:FeedDetailsServiceNowCmdbSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSftpSettings:FeedDetailsSftpSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSftpSettingsAuthentication:FeedDetailsSftpSettingsAuthentication",
                    "description": "SFTP Auth.\nStructure is documented below.\n"
                },
                "sourceDeletionOption": {
                    "type": "string",
                    "description": "Possible values:\nSOURCE_DELETION_NEVER\nSOURCE_DELETION_ON_SUCCESS\nSOURCE_DELETION_ON_SUCCESS_FILES_ONLY\n"
                },
                "sourceType": {
                    "type": "string",
                    "description": "Possible values:\nFILES\nFOLDERS\nFOLDERS_RECURSIVE\n"
                },
                "uri": {
                    "type": "string",
                    "description": "SFTP URI.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSftpSettingsAuthentication:FeedDetailsSftpSettingsAuthentication": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password. Used for username and password authentication.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "privateKey": {
                    "type": "string",
                    "description": "Private key. Used for private key authentication.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "privateKeyPassphrase": {
                    "type": "string",
                    "description": "Private key passphrase. Used for private key authentication.\n"
                },
                "username": {
                    "type": "string",
                    "description": "Username. Used for username and password authentication.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSymantecEventExportSettings:FeedDetailsSymantecEventExportSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsSymantecEventExportSettingsAuthentication:FeedDetailsSymantecEventExportSettingsAuthentication",
                    "description": "OAuth 2.0 refresh token grant. See https://tools.ietf.org/html/rfc6749.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsSymantecEventExportSettingsAuthentication:FeedDetailsSymantecEventExportSettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "refreshToken": {
                    "type": "string",
                    "description": "Refresh Token.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsThinkstCanarySettings:FeedDetailsThinkstCanarySettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsThinkstCanarySettingsAuthentication:FeedDetailsThinkstCanarySettingsAuthentication",
                    "description": "HTTP header based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsThinkstCanarySettingsAuthentication:FeedDetailsThinkstCanarySettingsAuthentication": {
            "properties": {
                "headerKeyValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/FeedDetailsThinkstCanarySettingsAuthenticationHeaderKeyValue:FeedDetailsThinkstCanarySettingsAuthenticationHeaderKeyValue"
                    },
                    "description": "Header key-value pairs.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsThinkstCanarySettingsAuthenticationHeaderKeyValue:FeedDetailsThinkstCanarySettingsAuthenticationHeaderKeyValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsThreatConnectIocSettings:FeedDetailsThreatConnectIocSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsThreatConnectIocSettingsAuthentication:FeedDetailsThreatConnectIocSettingsAuthentication",
                    "description": "Info for username and secret based authentication.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "owners": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Owners.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsThreatConnectIocSettingsAuthentication:FeedDetailsThreatConnectIocSettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsThreatConnectIocV3Settings:FeedDetailsThreatConnectIocV3Settings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsThreatConnectIocV3SettingsAuthentication:FeedDetailsThreatConnectIocV3SettingsAuthentication",
                    "description": "Info for username and secret based authentication.\n"
                },
                "fields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fields\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "hostname.\n"
                },
                "owners": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Owners.\n"
                },
                "schedule": {
                    "type": "integer",
                    "description": "Schedule\n"
                },
                "tqlQuery": {
                    "type": "string",
                    "description": "ThreatConnect Query Language filter.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsThreatConnectIocV3SettingsAuthentication:FeedDetailsThreatConnectIocV3SettingsAuthentication": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsTrellixHxAlertsSettings:FeedDetailsTrellixHxAlertsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxAlertsSettingsAuthentication:FeedDetailsTrellixHxAlertsSettingsAuthentication",
                    "description": "TrellixStarXAuthentication contains a oneof with all of the authentication\ntypes supported by Trellix *X devices.\nStructure is documented below.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Trellix HX Device URL.\nThis must be a valid URL with an http or https scheme. It has no default.\nUsually a device URL is in the form of either:\nhttps://xxx.trellix.com/hx/id//\n- or -\nhttps://htapdeviceproxy.md.mandiant.net/dphb/hx//\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsTrellixHxAlertsSettingsAuthentication:FeedDetailsTrellixHxAlertsSettingsAuthentication": {
            "properties": {
                "msso": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxAlertsSettingsAuthenticationMsso:FeedDetailsTrellixHxAlertsSettingsAuthenticationMsso",
                    "description": "Info for MssoAuthentication using a username, password, and login api\nendpoint.\nStructure is documented below.\n"
                },
                "trellixIam": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxAlertsSettingsAuthenticationTrellixIam:FeedDetailsTrellixHxAlertsSettingsAuthenticationTrellixIam",
                    "description": "Settings for TrellixIAMAuthentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsTrellixHxAlertsSettingsAuthenticationMsso:FeedDetailsTrellixHxAlertsSettingsAuthenticationMsso": {
            "properties": {
                "apiEndpoint": {
                    "type": "string",
                    "description": "The login api endpoint url.\nThis must be a valid URL with an http or https scheme. It has no default.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password of the account identified by username.\nThere are no restrictions on the format of the password. It has no default,\nspecifically enforced min / max length or character set. The password\nwill have been provided by an MSSO administrator and it is assumed that\nthey have provided a password that is internally consistent with MSSO\nauthentication requirements / validation.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "Username for MSSO authentication.\nThere are no restrictions on the format of the username. It has no default,\nspecifically enforced min / max length or character set. The username\nwill have been provided by an MSSO administrator and it is assumed that\nthey have provided a username that is internally consistent with MSSO\nauthentication requirements / validation.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsTrellixHxAlertsSettingsAuthenticationTrellixIam:FeedDetailsTrellixHxAlertsSettingsAuthenticationTrellixIam": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID generated in Trellix IAM.\nThis is a unique identifier for the user that is generated in Trellix IAM.\nIt has no default, specifically enforced min / max length or character set.\nIt is assumed that the Client ID generated in Trellix IAM is internally\nconsistent with Trellix IAM authentication requirements / validation.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Secret associated with the Client ID.\nThis is the secret generated in Trellix IAM for the Client ID. It has no\ndefault, specifically enforced min / max length or character set. It is\nassumed that the secret generated in Trellix IAM is internally\nconsistent with Trellix IAM authentication requirements / validation.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "scope": {
                    "type": "string",
                    "description": "OAUTH 2 scope to request for the authentication token.\nThis is the OAUTH 2 scope to request for the authentication token. It has\nno default, specifically enforced min / max length or character set. It is\nassumed that the scope provided is internally consistent with Trellix IAM\nauthentication requirements / validation.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsTrellixHxBulkAcqsSettings:FeedDetailsTrellixHxBulkAcqsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxBulkAcqsSettingsAuthentication:FeedDetailsTrellixHxBulkAcqsSettingsAuthentication",
                    "description": "TrellixStarXAuthentication contains a oneof with all of the authentication\ntypes supported by Trellix *X devices.\nStructure is documented below.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Trellix HX Device URL.\nThis must be a valid URL with an http or https scheme. It has no default.\nUsually a device URL is in the form of either:\nhttps://xxx.trellix.com/hx/id//\n- or -\nhttps://htapdeviceproxy.md.mandiant.net/dphb/hx//\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ]
        },
        "gcp:chronicle/FeedDetailsTrellixHxBulkAcqsSettingsAuthentication:FeedDetailsTrellixHxBulkAcqsSettingsAuthentication": {
            "properties": {
                "msso": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxBulkAcqsSettingsAuthenticationMsso:FeedDetailsTrellixHxBulkAcqsSettingsAuthenticationMsso",
                    "description": "Info for MssoAuthentication using a username, password, and login api\nendpoint.\nStructure is documented below.\n"
                },
                "trellixIam": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxBulkAcqsSettingsAuthenticationTrellixIam:FeedDetailsTrellixHxBulkAcqsSettingsAuthenticationTrellixIam",
                    "description": "Settings for TrellixIAMAuthentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsTrellixHxBulkAcqsSettingsAuthenticationMsso:FeedDetailsTrellixHxBulkAcqsSettingsAuthenticationMsso": {
            "properties": {
                "apiEndpoint": {
                    "type": "string",
                    "description": "The login api endpoint url.\nThis must be a valid URL with an http or https scheme. It has no default.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password of the account identified by username.\nThere are no restrictions on the format of the password. It has no default,\nspecifically enforced min / max length or character set. The password\nwill have been provided by an MSSO administrator and it is assumed that\nthey have provided a password that is internally consistent with MSSO\nauthentication requirements / validation.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "Username for MSSO authentication.\nThere are no restrictions on the format of the username. It has no default,\nspecifically enforced min / max length or character set. The username\nwill have been provided by an MSSO administrator and it is assumed that\nthey have provided a username that is internally consistent with MSSO\nauthentication requirements / validation.\n"
                }
            },
            "type": "object",
            "required": [
                "apiEndpoint",
                "password",
                "username"
            ]
        },
        "gcp:chronicle/FeedDetailsTrellixHxBulkAcqsSettingsAuthenticationTrellixIam:FeedDetailsTrellixHxBulkAcqsSettingsAuthenticationTrellixIam": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID generated in Trellix IAM.\nThis is a unique identifier for the user that is generated in Trellix IAM.\nIt has no default, specifically enforced min / max length or character set.\nIt is assumed that the Client ID generated in Trellix IAM is internally\nconsistent with Trellix IAM authentication requirements / validation.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Secret associated with the Client ID.\nThis is the secret generated in Trellix IAM for the Client ID. It has no\ndefault, specifically enforced min / max length or character set. It is\nassumed that the secret generated in Trellix IAM is internally\nconsistent with Trellix IAM authentication requirements / validation.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "scope": {
                    "type": "string",
                    "description": "OAUTH 2 scope to request for the authentication token.\nThis is the OAUTH 2 scope to request for the authentication token. It has\nno default, specifically enforced min / max length or character set. It is\nassumed that the scope provided is internally consistent with Trellix IAM\nauthentication requirements / validation.\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "clientSecret",
                "scope"
            ]
        },
        "gcp:chronicle/FeedDetailsTrellixHxHostsSettings:FeedDetailsTrellixHxHostsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxHostsSettingsAuthentication:FeedDetailsTrellixHxHostsSettingsAuthentication",
                    "description": "TrellixStarXAuthentication contains a oneof with all of the authentication\ntypes supported by Trellix *X devices.\nStructure is documented below.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Trellix HX Device URL.\nThis must be a valid URL with an http or https scheme. It has no default.\nUsually a device URL is in the form of either:\nhttps://xxx.trellix.com/hx/id//\n- or -\nhttps://htapdeviceproxy.md.mandiant.net/dphb/hx//\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ]
        },
        "gcp:chronicle/FeedDetailsTrellixHxHostsSettingsAuthentication:FeedDetailsTrellixHxHostsSettingsAuthentication": {
            "properties": {
                "msso": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxHostsSettingsAuthenticationMsso:FeedDetailsTrellixHxHostsSettingsAuthenticationMsso",
                    "description": "Info for MssoAuthentication using a username, password, and login api\nendpoint.\nStructure is documented below.\n"
                },
                "trellixIam": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsTrellixHxHostsSettingsAuthenticationTrellixIam:FeedDetailsTrellixHxHostsSettingsAuthenticationTrellixIam",
                    "description": "Settings for TrellixIAMAuthentication.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsTrellixHxHostsSettingsAuthenticationMsso:FeedDetailsTrellixHxHostsSettingsAuthenticationMsso": {
            "properties": {
                "apiEndpoint": {
                    "type": "string",
                    "description": "The login api endpoint url.\nThis must be a valid URL with an http or https scheme. It has no default.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password of the account identified by username.\nThere are no restrictions on the format of the password. It has no default,\nspecifically enforced min / max length or character set. The password\nwill have been provided by an MSSO administrator and it is assumed that\nthey have provided a password that is internally consistent with MSSO\nauthentication requirements / validation.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "username": {
                    "type": "string",
                    "description": "Username for MSSO authentication.\nThere are no restrictions on the format of the username. It has no default,\nspecifically enforced min / max length or character set. The username\nwill have been provided by an MSSO administrator and it is assumed that\nthey have provided a username that is internally consistent with MSSO\nauthentication requirements / validation.\n"
                }
            },
            "type": "object",
            "required": [
                "apiEndpoint",
                "password",
                "username"
            ]
        },
        "gcp:chronicle/FeedDetailsTrellixHxHostsSettingsAuthenticationTrellixIam:FeedDetailsTrellixHxHostsSettingsAuthenticationTrellixIam": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID generated in Trellix IAM.\nThis is a unique identifier for the user that is generated in Trellix IAM.\nIt has no default, specifically enforced min / max length or character set.\nIt is assumed that the Client ID generated in Trellix IAM is internally\nconsistent with Trellix IAM authentication requirements / validation.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Secret associated with the Client ID.\nThis is the secret generated in Trellix IAM for the Client ID. It has no\ndefault, specifically enforced min / max length or character set. It is\nassumed that the secret generated in Trellix IAM is internally\nconsistent with Trellix IAM authentication requirements / validation.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "scope": {
                    "type": "string",
                    "description": "OAUTH 2 scope to request for the authentication token.\nThis is the OAUTH 2 scope to request for the authentication token. It has\nno default, specifically enforced min / max length or character set. It is\nassumed that the scope provided is internally consistent with Trellix IAM\nauthentication requirements / validation.\n"
                }
            },
            "type": "object",
            "required": [
                "clientId",
                "clientSecret",
                "scope"
            ]
        },
        "gcp:chronicle/FeedDetailsWebhookSettings:FeedDetailsWebhookSettings": {
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkdaySettings:FeedDetailsWorkdaySettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkdaySettingsAuthentication:FeedDetailsWorkdaySettingsAuthentication",
                    "description": "Authentication for Workday.\nStructure is documented below.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "API Hostname.\n"
                },
                "tenantId": {
                    "type": "string",
                    "description": "Tenant ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkdaySettingsAuthentication:FeedDetailsWorkdaySettingsAuthentication": {
            "properties": {
                "clientId": {
                    "type": "string",
                    "description": "Client ID.\n"
                },
                "clientSecret": {
                    "type": "string",
                    "description": "Client Secret.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "refreshToken": {
                    "type": "string",
                    "description": "Refresh Token.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The access token used to authenticate against Workday. This field is called\n\"secret\" to maintain backwards compatibility. Workday was (only) configured\nusing username (which was unused) and secret (which is used as the access\ntoken). Either this field or all of the other OAuth fields below must be\nspecified.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                },
                "user": {
                    "type": "string",
                    "description": "Username. This is unused: Workday feeds were originally configured using a\nusername and secret authentication method, but only the secret field was\nused, and it was used to supply the OAuth access token.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceActivitySettings:FeedDetailsWorkspaceActivitySettings": {
            "properties": {
                "applications": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Applications.\n"
                },
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceActivitySettingsAuthentication:FeedDetailsWorkspaceActivitySettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                },
                "workspaceCustomerId": {
                    "type": "string",
                    "description": "Customer ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceActivitySettingsAuthentication:FeedDetailsWorkspaceActivitySettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceActivitySettingsAuthenticationClaims:FeedDetailsWorkspaceActivitySettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceActivitySettingsAuthenticationRsCredentials:FeedDetailsWorkspaceActivitySettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceActivitySettingsAuthenticationClaims:FeedDetailsWorkspaceActivitySettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceActivitySettingsAuthenticationRsCredentials:FeedDetailsWorkspaceActivitySettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceAlertsSettings:FeedDetailsWorkspaceAlertsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceAlertsSettingsAuthentication:FeedDetailsWorkspaceAlertsSettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                },
                "workspaceCustomerId": {
                    "type": "string",
                    "description": "Customer ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceAlertsSettingsAuthentication:FeedDetailsWorkspaceAlertsSettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceAlertsSettingsAuthenticationClaims:FeedDetailsWorkspaceAlertsSettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceAlertsSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceAlertsSettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceAlertsSettingsAuthenticationClaims:FeedDetailsWorkspaceAlertsSettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceAlertsSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceAlertsSettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceChromeOsSettings:FeedDetailsWorkspaceChromeOsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceChromeOsSettingsAuthentication:FeedDetailsWorkspaceChromeOsSettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                },
                "workspaceCustomerId": {
                    "type": "string",
                    "description": "Customer ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceChromeOsSettingsAuthentication:FeedDetailsWorkspaceChromeOsSettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceChromeOsSettingsAuthenticationClaims:FeedDetailsWorkspaceChromeOsSettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceChromeOsSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceChromeOsSettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceChromeOsSettingsAuthenticationClaims:FeedDetailsWorkspaceChromeOsSettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceChromeOsSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceChromeOsSettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceGroupsSettings:FeedDetailsWorkspaceGroupsSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceGroupsSettingsAuthentication:FeedDetailsWorkspaceGroupsSettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                },
                "workspaceCustomerId": {
                    "type": "string",
                    "description": "Customer ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceGroupsSettingsAuthentication:FeedDetailsWorkspaceGroupsSettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceGroupsSettingsAuthenticationClaims:FeedDetailsWorkspaceGroupsSettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceGroupsSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceGroupsSettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceGroupsSettingsAuthenticationClaims:FeedDetailsWorkspaceGroupsSettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceGroupsSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceGroupsSettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceMobileSettings:FeedDetailsWorkspaceMobileSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceMobileSettingsAuthentication:FeedDetailsWorkspaceMobileSettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                },
                "workspaceCustomerId": {
                    "type": "string",
                    "description": "Customer ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceMobileSettingsAuthentication:FeedDetailsWorkspaceMobileSettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceMobileSettingsAuthenticationClaims:FeedDetailsWorkspaceMobileSettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceMobileSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceMobileSettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceMobileSettingsAuthenticationClaims:FeedDetailsWorkspaceMobileSettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceMobileSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceMobileSettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspacePrivilegesSettings:FeedDetailsWorkspacePrivilegesSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspacePrivilegesSettingsAuthentication:FeedDetailsWorkspacePrivilegesSettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                },
                "workspaceCustomerId": {
                    "type": "string",
                    "description": "Customer ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspacePrivilegesSettingsAuthentication:FeedDetailsWorkspacePrivilegesSettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspacePrivilegesSettingsAuthenticationClaims:FeedDetailsWorkspacePrivilegesSettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspacePrivilegesSettingsAuthenticationRsCredentials:FeedDetailsWorkspacePrivilegesSettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspacePrivilegesSettingsAuthenticationClaims:FeedDetailsWorkspacePrivilegesSettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspacePrivilegesSettingsAuthenticationRsCredentials:FeedDetailsWorkspacePrivilegesSettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceUsersSettings:FeedDetailsWorkspaceUsersSettings": {
            "properties": {
                "authentication": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceUsersSettingsAuthentication:FeedDetailsWorkspaceUsersSettingsAuthentication",
                    "description": "OAuth 2.0 JWT grant. See, https://tools.ietf.org/html/rfc7519\nStructure is documented below.\n"
                },
                "projectionType": {
                    "type": "string",
                    "description": "Projection Type.\nPossible values:\nBASIC_PROJECTION\nFULL_PROJECTION\n"
                },
                "workspaceCustomerId": {
                    "type": "string",
                    "description": "Customer ID.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceUsersSettingsAuthentication:FeedDetailsWorkspaceUsersSettingsAuthentication": {
            "properties": {
                "claims": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceUsersSettingsAuthenticationClaims:FeedDetailsWorkspaceUsersSettingsAuthenticationClaims",
                    "description": "Claims identifying a specific customer.\nStructure is documented below.\n"
                },
                "rsCredentials": {
                    "$ref": "#/types/gcp:chronicle/FeedDetailsWorkspaceUsersSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceUsersSettingsAuthenticationRsCredentials",
                    "description": "RS credentials.\nStructure is documented below.\n"
                },
                "tokenEndpoint": {
                    "type": "string",
                    "description": "Token endpoint to get the OAuth token from.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceUsersSettingsAuthenticationClaims:FeedDetailsWorkspaceUsersSettingsAuthenticationClaims": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "Issuer. Usually the client_id.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "Subject. Usually the email.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedDetailsWorkspaceUsersSettingsAuthenticationRsCredentials:FeedDetailsWorkspaceUsersSettingsAuthenticationRsCredentials": {
            "properties": {
                "privateKey": {
                    "type": "string",
                    "description": "Private key in PEM format.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/FeedFailureDetails:FeedFailureDetails": {
            "properties": {
                "errorAction": {
                    "type": "string",
                    "description": "(Output)\u003cspan pulumi-lang-nodejs=\"\nerrorAction \" pulumi-lang-dotnet=\"\nErrorAction \" pulumi-lang-go=\"\nerrorAction \" pulumi-lang-python=\"\nerror_action \" pulumi-lang-yaml=\"\nerrorAction \" pulumi-lang-java=\"\nerrorAction \" pulumi-lang-hcl=\"\nerror_action \"\u003e\nerrorAction \u003c/span\u003econtains the user action prescribed for remediation of feed\nerror.\n"
                },
                "errorCause": {
                    "type": "string",
                    "description": "(Output)\u003cspan pulumi-lang-nodejs=\"\nerrorCause \" pulumi-lang-dotnet=\"\nErrorCause \" pulumi-lang-go=\"\nerrorCause \" pulumi-lang-python=\"\nerror_cause \" pulumi-lang-yaml=\"\nerrorCause \" pulumi-lang-java=\"\nerrorCause \" pulumi-lang-hcl=\"\nerror_cause \"\u003e\nerrorCause \u003c/span\u003econtains the information regarding the failure cause.\n"
                },
                "errorCode": {
                    "type": "string",
                    "description": "(Output)\u003cspan pulumi-lang-nodejs=\"\nerrorCode \" pulumi-lang-dotnet=\"\nErrorCode \" pulumi-lang-go=\"\nerrorCode \" pulumi-lang-python=\"\nerror_code \" pulumi-lang-yaml=\"\nerrorCode \" pulumi-lang-java=\"\nerrorCode \" pulumi-lang-hcl=\"\nerror_code \"\u003e\nerrorCode \u003c/span\u003econtains the error code for the feed. The field is populated for\nthe feeds with failed status.\n"
                },
                "httpErrorCode": {
                    "type": "integer",
                    "description": "(Output)\u003cspan pulumi-lang-nodejs=\"\nhttpErrorCode \" pulumi-lang-dotnet=\"\nHttpErrorCode \" pulumi-lang-go=\"\nhttpErrorCode \" pulumi-lang-python=\"\nhttp_error_code \" pulumi-lang-yaml=\"\nhttpErrorCode \" pulumi-lang-java=\"\nhttpErrorCode \" pulumi-lang-hcl=\"\nhttp_error_code \"\u003e\nhttpErrorCode \u003c/span\u003econtains the HTTP error code for the feed failure.\nfeed transfer failure may or may not result in http error code.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errorAction",
                        "errorCause",
                        "errorCode",
                        "httpErrorCode"
                    ]
                }
            }
        },
        "gcp:chronicle/FindingsRefinementDeploymentDetectionExclusionApplication:FindingsRefinementDeploymentDetectionExclusionApplication": {
            "properties": {
                "curatedRuleSets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The CuratedRuleSets this detection exclusion applies to.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/curatedRuleSetCategories/{category}/curatedRuleSets/{rule_set}\n"
                },
                "curatedRules": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The CuratedRules this detection exclusion applies to.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/curatedRules/{rule}\n"
                },
                "deletedCuratedRuleSets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe deleted CuratedRuleSets this detection exclusion applies to.\nIndicates to the customer that the detection exclusion no longer applies\nto the rule sets, so the detection exclusion should be updated.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/curatedRuleSetCategories/{category}/curatedRuleSets/{rule_set}\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Rules this detection exclusion applies to.\nFormat:\nprojects/{project}/locations/{location}/instances/{instance}/rules/{rule}\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deletedCuratedRuleSets"
                    ]
                }
            }
        },
        "gcp:chronicle/FindingsRefinementOutcomeFilter:FindingsRefinementOutcomeFilter": {
            "properties": {
                "outcomeFilterOperator": {
                    "type": "string",
                    "description": "The operator to be applied to the outcome variable.\nPossible values:\nEQUAL\nCONTAINS\nMATCHES_REGEX\nMATCHES_CIDR\n"
                },
                "outcomeValue": {
                    "type": "string",
                    "description": "The value of the outcome variable to match.\n"
                },
                "outcomeVariable": {
                    "type": "string",
                    "description": "The outcome variable name.\n"
                }
            },
            "type": "object",
            "required": [
                "outcomeFilterOperator",
                "outcomeValue",
                "outcomeVariable"
            ]
        },
        "gcp:chronicle/NativeDashboardChart:NativeDashboardChart": {
            "properties": {
                "chartLayout": {
                    "$ref": "#/types/gcp:chronicle/NativeDashboardChartChartLayout:NativeDashboardChartChartLayout",
                    "description": "The visual layout parameters of this chart within the dashboard.\nStructure is documented below.\n"
                },
                "dashboardChart": {
                    "type": "string",
                    "description": "The resource name of the associated DashboardChart.\n"
                },
                "filtersIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of dashboard filter IDs applied to this chart.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/NativeDashboardChartChartLayout:NativeDashboardChartChartLayout": {
            "properties": {
                "spanX": {
                    "type": "integer",
                    "description": "The number of columns the chart spans.\n"
                },
                "spanY": {
                    "type": "integer",
                    "description": "The number of rows the chart spans.\n"
                },
                "startX": {
                    "type": "integer",
                    "description": "The starting X coordinate.\n"
                },
                "startY": {
                    "type": "integer",
                    "description": "The starting Y coordinate.\n"
                }
            },
            "type": "object",
            "required": [
                "spanX",
                "spanY"
            ]
        },
        "gcp:chronicle/NativeDashboardFilter:NativeDashboardFilter": {
            "properties": {
                "chartIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The IDs of charts that this filter applies to.\n"
                },
                "dataSource": {
                    "type": "string",
                    "description": "The data source for the filter.\nPossible values:\nUDM, ENTITY, INGESTION_METRICS, RULE_DETECTIONS, RULESETS, GLOBAL,\nIOC_MATCHES, RULES, SOAR_CASES, SOAR_PLAYBOOKS, SOAR_CASE_HISTORY,\nDATA_TABLE, INVESTIGATION, INVESTIGATION_FEEDBACK\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the filter.\n"
                },
                "fieldPath": {
                    "type": "string",
                    "description": "The UDM field path being filtered.\n"
                },
                "filterOperatorAndFieldValues": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/NativeDashboardFilterFilterOperatorAndFieldValue:NativeDashboardFilterFilterOperatorAndFieldValue"
                    },
                    "description": "The specific operator and value set for the filter.\nStructure is documented below.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique ID of the filter.\n"
                },
                "isMandatory": {
                    "type": "boolean",
                    "description": "Whether the filter is mandatory for the dashboard consumer.\n"
                },
                "isStandardTimeRangeFilter": {
                    "type": "boolean",
                    "description": "Whether the filter is a standard time range filter.\n"
                },
                "isStandardTimeRangeFilterEnabled": {
                    "type": "boolean",
                    "description": "Whether the standard time range filter is currently enabled.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/NativeDashboardFilterFilterOperatorAndFieldValue:NativeDashboardFilterFilterOperatorAndFieldValue": {
            "properties": {
                "fieldValues": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The values for the modifier. All operators should have a single\nvalue other than 'IN' and 'BETWEEN'.\n"
                },
                "filterOperator": {
                    "type": "string",
                    "description": "The operator to apply to the field.\nPossible values are: `EQUAL`, `NOT_EQUAL`, `IN`, `GREATER_THAN`, `GREATER_THAN_OR_EQUAL_TO`, `LESS_THAN`, `LESS_THAN_OR_EQUAL_TO`, `BETWEEN`, `PAST`, `IS_NULL`, `IS_NOT_NULL`, `STARTS_WITH`, `ENDS_WITH`, `DOES_NOT_STARTS_WITH`, `DOES_NOT_ENDS_WITH`, `NOT_IN`, `CONTAINS`, `DOES_NOT_CONTAIN`.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserChangelog:ParserChangelog": {
            "properties": {
                "entries": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/ParserChangelogEntry:ParserChangelogEntry"
                    },
                    "description": "all the changelog of a parser.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserChangelogEntry:ParserChangelogEntry": {
            "properties": {
                "changeMessage": {
                    "type": "string",
                    "description": "(Output)\nThe changelog message.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nTime at which changelog was created.\n"
                },
                "deleted": {
                    "type": "boolean",
                    "description": "(Output)\nFlag whether the entry is added or deleted.\nThis will be true in case of rollback and false in case of upgrade.\n"
                },
                "parserVersion": {
                    "type": "string",
                    "description": "(Output)\nThe parser version for which the changelog is created.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "changeMessage",
                        "createTime",
                        "deleted",
                        "parserVersion"
                    ]
                }
            }
        },
        "gcp:chronicle/ParserCreator:ParserCreator": {
            "properties": {
                "author": {
                    "type": "string",
                    "description": "(Output)\nThe name of the author, who created this parser.\n"
                },
                "customer": {
                    "type": "string",
                    "description": "(Output)\nThe customer who created it, This can represent the partner as well.\nIn case of prebuilt parser this will be empty.\n"
                },
                "source": {
                    "type": "string",
                    "description": "(Output)\nThe source of the parser.\nPossible values:\nGOOGLE\nCUSTOM_GOOGLE_OVERRIDE\nPARTNER\nCUSTOMER\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "author",
                        "customer",
                        "source"
                    ]
                }
            }
        },
        "gcp:chronicle/ParserExtensionDynamicParsing:ParserExtensionDynamicParsing": {
            "properties": {
                "optedFields": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/ParserExtensionDynamicParsingOptedField:ParserExtensionDynamicParsingOptedField"
                    },
                    "description": "List of fields to be parsed.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserExtensionDynamicParsingOptedField:ParserExtensionDynamicParsingOptedField": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path of the log field.\n",
                    "willReplaceOnChanges": true
                },
                "sampleValue": {
                    "type": "string",
                    "description": "Sample value of the log field.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserExtensionFieldExtractors:ParserExtensionFieldExtractors": {
            "properties": {
                "appendRepeatedFields": {
                    "type": "boolean",
                    "description": "Whether to append repeated fields or not.\nWhen false, repeated fields will be replaced.\n",
                    "willReplaceOnChanges": true
                },
                "extractors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/ParserExtensionFieldExtractorsExtractor:ParserExtensionFieldExtractorsExtractor"
                    },
                    "description": "List of FieldExtractors.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "logFormat": {
                    "type": "string",
                    "description": "Possible values:\nJSON\nCSV\nXML\n",
                    "willReplaceOnChanges": true
                },
                "preprocessConfig": {
                    "$ref": "#/types/gcp:chronicle/ParserExtensionFieldExtractorsPreprocessConfig:ParserExtensionFieldExtractorsPreprocessConfig",
                    "description": "PreProcessConfig holds the GROK expression to extract the syslog header.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "transformedCbnSnippet": {
                    "type": "string",
                    "description": "(Output)\nCBN snippet generated from field extractors.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "transformedCbnSnippet"
                    ]
                }
            }
        },
        "gcp:chronicle/ParserExtensionFieldExtractorsExtractor:ParserExtensionFieldExtractorsExtractor": {
            "properties": {
                "destinationPath": {
                    "type": "string",
                    "description": "Path in generated event which is to be populated. This is required if the\nFieldExtractor is used to specify the parser extension.\n",
                    "willReplaceOnChanges": true
                },
                "fieldPath": {
                    "type": "string",
                    "description": "Field path could be a json path, xml path or csv column name\ndepending on log format. It refers to a section or substring in raw log.\nThis is required if the FieldExtractor is used to specify the parser\nextension.\n",
                    "willReplaceOnChanges": true
                },
                "preconditionOp": {
                    "type": "string",
                    "description": "Operator used for precondition.\nPossible values:\nEQUALS\nNOT_EQUALS\n",
                    "willReplaceOnChanges": true
                },
                "preconditionPath": {
                    "type": "string",
                    "description": "Precondition path could be a json path, xml path or csv column name\ndepending on log format. It refers to a section or substring in raw log.\n",
                    "willReplaceOnChanges": true
                },
                "preconditionValue": {
                    "type": "string",
                    "description": "Precondition value.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "Value to be mapped to the destination path directly.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserExtensionFieldExtractorsPreprocessConfig:ParserExtensionFieldExtractorsPreprocessConfig": {
            "properties": {
                "grokRegex": {
                    "type": "string",
                    "description": "GROK Regex to extract the structured part of the log.\nsyntax documentation:\nwww.elastic.co/guide/en/logstash/current/plugins-filters-grok.html\n",
                    "willReplaceOnChanges": true
                },
                "target": {
                    "type": "string",
                    "description": "Target field name for the structured part of the log.\nThis should match a SEMANTIC identifier from the grok expression.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserLowCode:ParserLowCode": {
            "properties": {
                "fieldExtractors": {
                    "$ref": "#/types/gcp:chronicle/ParserLowCodeFieldExtractors:ParserLowCodeFieldExtractors",
                    "description": "A representation of a parser extension as a set of field extractors.\nStructure is documented below.\n"
                },
                "log": {
                    "type": "string",
                    "description": "The log used to create this low code parser in the UI.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserLowCodeFieldExtractors:ParserLowCodeFieldExtractors": {
            "properties": {
                "appendRepeatedFields": {
                    "type": "boolean",
                    "description": "Whether to append repeated fields or not.\nWhen false, repeated fields will be replaced.\n"
                },
                "extractors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:chronicle/ParserLowCodeFieldExtractorsExtractor:ParserLowCodeFieldExtractorsExtractor"
                    },
                    "description": "List of FieldExtractors.\nStructure is documented below.\n"
                },
                "logFormat": {
                    "type": "string",
                    "description": "Possible values:\nJSON\nCSV\nXML\n"
                },
                "preprocessConfig": {
                    "$ref": "#/types/gcp:chronicle/ParserLowCodeFieldExtractorsPreprocessConfig:ParserLowCodeFieldExtractorsPreprocessConfig",
                    "description": "PreProcessConfig holds the GROK expression to extract the syslog header.\nStructure is documented below.\n"
                },
                "transformedCbnSnippet": {
                    "type": "string",
                    "description": "(Output)\nCBN snippet generated from field extractors.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "transformedCbnSnippet"
                    ]
                }
            }
        },
        "gcp:chronicle/ParserLowCodeFieldExtractorsExtractor:ParserLowCodeFieldExtractorsExtractor": {
            "properties": {
                "destinationPath": {
                    "type": "string",
                    "description": "Path in generated event which is to be populated. This is required if the\nFieldExtractor is used to specify the parser extension.\n"
                },
                "fieldPath": {
                    "type": "string",
                    "description": "Field path could be a json path, xml path or csv column name\ndepending on log format. It refers to a section or substring in raw log.\nThis is required if the FieldExtractor is used to specify the parser\nextension.\n"
                },
                "preconditionOp": {
                    "type": "string",
                    "description": "Operator used for precondition.\nPossible values:\nEQUALS\nNOT_EQUALS\n"
                },
                "preconditionPath": {
                    "type": "string",
                    "description": "Precondition path could be a json path, xml path or csv column name\ndepending on log format. It refers to a section or substring in raw log.\n"
                },
                "preconditionValue": {
                    "type": "string",
                    "description": "Precondition value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value to be mapped to the destination path directly.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserLowCodeFieldExtractorsPreprocessConfig:ParserLowCodeFieldExtractorsPreprocessConfig": {
            "properties": {
                "grokRegex": {
                    "type": "string",
                    "description": "GROK Regex to extract the structured part of the log.\nsyntax documentation:\nwww.elastic.co/guide/en/logstash/current/plugins-filters-grok.html\n"
                },
                "target": {
                    "type": "string",
                    "description": "Target field name for the structured part of the log.\nThis should match a SEMANTIC identifier from the grok expression.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ParserVersionInfo:ParserVersionInfo": {
            "properties": {
                "autoUpgradeDisabled": {
                    "type": "boolean",
                    "description": "Signifies if the parser is disabled for auto upgrade. If true, the parser\nwill not be upgraded by the auto upgrade process.\n"
                },
                "latestParser": {
                    "type": "string",
                    "description": "(Output)\nThe resource name of latest Parser for this logtype.\nFormat:\nprojects/{project}/locations/{region}/instances/{instance}/logTypes/{log_type}/parsers/{parser}/{id}\n"
                },
                "latestParserVersion": {
                    "type": "string",
                    "description": "(Output)\nThe version for the latest available stable version of the parser.\n"
                },
                "rollbackAvailable": {
                    "type": "boolean",
                    "description": "(Output)\nSignifies if rollback is available for this parser version.\n"
                },
                "version": {
                    "type": "string",
                    "description": "(Output)\nThe version of the parser.\n"
                }
            },
            "type": "object",
            "required": [
                "autoUpgradeDisabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "autoUpgradeDisabled",
                        "latestParser",
                        "latestParserVersion",
                        "rollbackAvailable",
                        "version"
                    ]
                }
            }
        },
        "gcp:chronicle/ReferenceListEntry:ReferenceListEntry": {
            "properties": {
                "value": {
                    "type": "string",
                    "description": "Required. The value of the entry. Maximum length is 512 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "value"
            ]
        },
        "gcp:chronicle/ReferenceListScopeInfo:ReferenceListScopeInfo": {
            "properties": {
                "referenceListScope": {
                    "$ref": "#/types/gcp:chronicle/ReferenceListScopeInfoReferenceListScope:ReferenceListScopeInfoReferenceListScope",
                    "description": "ReferenceListScope specifies the list of scope names of the reference list.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/ReferenceListScopeInfoReferenceListScope:ReferenceListScopeInfoReferenceListScope": {
            "properties": {
                "scopeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. The list of scope names of the reference list. The scope names should be\nfull resource names and should be of the format:\n\"projects/{project}/locations/{location}/instances/{instance}/dataAccessScopes/{scope_name}\".\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/RetrohuntExecutionInterval:RetrohuntExecutionInterval": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "Optional. Exclusive end of the interval.\nIf specified, a Timestamp matching this interval will have to be before the\nend.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Optional. Inclusive start of the interval.\nIf specified, a Timestamp matching this interval will have to be the same\nor after the start.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/RetrohuntProcessInterval:RetrohuntProcessInterval": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "Exclusive end of the interval.\n",
                    "willReplaceOnChanges": true
                },
                "startTime": {
                    "type": "string",
                    "description": "Inclusive start of the interval.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "endTime",
                "startTime"
            ]
        },
        "gcp:chronicle/RuleCompilationDiagnostic:RuleCompilationDiagnostic": {
            "properties": {
                "message": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The diagnostic message.\n"
                },
                "position": {
                    "$ref": "#/types/gcp:chronicle/RuleCompilationDiagnosticPosition:RuleCompilationDiagnosticPosition",
                    "description": "CompilationPosition represents the location of a compilation diagnostic in\nrule text.\nStructure is documented below.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The severity of a rule's compilation diagnostic.\nPossible values:\nSEVERITY_UNSPECIFIED\nWARNING\nERROR\n"
                },
                "uri": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Link to documentation that describes a diagnostic in more detail.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "message",
                        "severity",
                        "uri"
                    ]
                }
            }
        },
        "gcp:chronicle/RuleCompilationDiagnosticPosition:RuleCompilationDiagnosticPosition": {
            "properties": {
                "endColumn": {
                    "type": "integer",
                    "description": "(Output)\nOutput only. End column number, beginning at 1.\n"
                },
                "endLine": {
                    "type": "integer",
                    "description": "(Output)\nOutput only. End line number, beginning at 1.\n"
                },
                "startColumn": {
                    "type": "integer",
                    "description": "(Output)\nOutput only. Start column number, beginning at 1.\n"
                },
                "startLine": {
                    "type": "integer",
                    "description": "(Output)\nOutput only. Start line number, beginning at 1.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endColumn",
                        "endLine",
                        "startColumn",
                        "startLine"
                    ]
                }
            }
        },
        "gcp:chronicle/RuleSeverity:RuleSeverity": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "The display name of the severity level. Extracted from the meta section of\nthe rule text.\n"
                }
            },
            "type": "object"
        },
        "gcp:chronicle/WatchlistEntityCount:WatchlistEntityCount": {
            "properties": {
                "asset": {
                    "type": "integer",
                    "description": "(Output)\nOutput only. Count of asset type entities in the watchlist.\n"
                },
                "user": {
                    "type": "integer",
                    "description": "(Output)\nOutput only. Count of user type entities in the watchlist.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "asset",
                        "user"
                    ]
                }
            }
        },
        "gcp:chronicle/WatchlistEntityPopulationMechanism:WatchlistEntityPopulationMechanism": {
            "properties": {
                "manual": {
                    "$ref": "#/types/gcp:chronicle/WatchlistEntityPopulationMechanismManual:WatchlistEntityPopulationMechanismManual",
                    "description": "Entities are added manually.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "manual"
                    ]
                }
            }
        },
        "gcp:chronicle/WatchlistEntityPopulationMechanismManual:WatchlistEntityPopulationMechanismManual": {
            "type": "object"
        },
        "gcp:chronicle/WatchlistWatchlistUserPreferences:WatchlistWatchlistUserPreferences": {
            "properties": {
                "pinned": {
                    "type": "boolean",
                    "description": "Optional. Whether the watchlist is pinned on the dashboard.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudasset/FolderFeedCondition:FolderFeedCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file\nname and a position in the file.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:cloudasset/FolderFeedFeedOutputConfig:FolderFeedFeedOutputConfig": {
            "properties": {
                "pubsubDestination": {
                    "$ref": "#/types/gcp:cloudasset/FolderFeedFeedOutputConfigPubsubDestination:FolderFeedFeedOutputConfigPubsubDestination",
                    "description": "Destination on Cloud Pubsub.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "pubsubDestination"
            ]
        },
        "gcp:cloudasset/FolderFeedFeedOutputConfigPubsubDestination:FolderFeedFeedOutputConfigPubsubDestination": {
            "properties": {
                "topic": {
                    "type": "string",
                    "description": "Destination on Cloud Pubsub topic.\n"
                }
            },
            "type": "object",
            "required": [
                "topic"
            ]
        },
        "gcp:cloudasset/OrganizationFeedCondition:OrganizationFeedCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file\nname and a position in the file.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:cloudasset/OrganizationFeedFeedOutputConfig:OrganizationFeedFeedOutputConfig": {
            "properties": {
                "pubsubDestination": {
                    "$ref": "#/types/gcp:cloudasset/OrganizationFeedFeedOutputConfigPubsubDestination:OrganizationFeedFeedOutputConfigPubsubDestination",
                    "description": "Destination on Cloud Pubsub.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "pubsubDestination"
            ]
        },
        "gcp:cloudasset/OrganizationFeedFeedOutputConfigPubsubDestination:OrganizationFeedFeedOutputConfigPubsubDestination": {
            "properties": {
                "topic": {
                    "type": "string",
                    "description": "Destination on Cloud Pubsub topic.\n"
                }
            },
            "type": "object",
            "required": [
                "topic"
            ]
        },
        "gcp:cloudasset/ProjectFeedCondition:ProjectFeedCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file\nname and a position in the file.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:cloudasset/ProjectFeedFeedOutputConfig:ProjectFeedFeedOutputConfig": {
            "properties": {
                "pubsubDestination": {
                    "$ref": "#/types/gcp:cloudasset/ProjectFeedFeedOutputConfigPubsubDestination:ProjectFeedFeedOutputConfigPubsubDestination",
                    "description": "Destination on Cloud Pubsub.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "pubsubDestination"
            ]
        },
        "gcp:cloudasset/ProjectFeedFeedOutputConfigPubsubDestination:ProjectFeedFeedOutputConfigPubsubDestination": {
            "properties": {
                "topic": {
                    "type": "string",
                    "description": "Destination on Cloud Pubsub topic.\n"
                }
            },
            "type": "object",
            "required": [
                "topic"
            ]
        },
        "gcp:cloudasset/getResourcesSearchAllResult:getResourcesSearchAllResult": {
            "properties": {
                "additionalAttributes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Additional searchable attributes of this resource. Informational only. The exact set of attributes is subject to change. For example: project id, DNS name etc.\n"
                },
                "assetType": {
                    "type": "string",
                    "description": "The type of this resource.\n"
                },
                "description": {
                    "type": "string",
                    "description": "One or more paragraphs of text description of this resource. Maximum length could be up to 1M bytes.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of this resource.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Labels associated with this resource.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location can be \u003cspan pulumi-lang-nodejs=\"`global`\" pulumi-lang-dotnet=\"`Global`\" pulumi-lang-go=\"`global`\" pulumi-lang-python=\"`global`\" pulumi-lang-yaml=\"`global`\" pulumi-lang-java=\"`global`\" pulumi-lang-hcl=\"`global`\"\u003e`global`\u003c/span\u003e, regional like `us-east1`, or zonal like `us-west1-b`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The full resource name. See [Resource Names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information.\n"
                },
                "networkTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags associated with this resource.\n"
                },
                "project": {
                    "type": "string",
                    "description": "The project that this resource belongs to, in the form of `projects/{project_number}`.\n"
                }
            },
            "type": "object",
            "required": [
                "additionalAttributes",
                "assetType",
                "description",
                "displayName",
                "labels",
                "location",
                "name",
                "networkTags",
                "project"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudasset/getSearchAllResourcesResult:getSearchAllResourcesResult": {
            "properties": {
                "assetType": {
                    "type": "string",
                    "description": "The type of this resource.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "The create timestamp of this resource, at which the resource was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "One or more paragraphs of text description of this resource. Maximum length could be up to 1M bytes.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of this resource.\n"
                },
                "folders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The folder(s) that this resource belongs to, in the form of `folders/{FOLDER_NUMBER}`. This field is available when the resource belongs to one or more folders.\n"
                },
                "kmsKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Cloud KMS CryptoKey names or CryptoKeyVersion names. This field is available only when the resource's Protobuf contains it.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Labels associated with this resource.\n"
                },
                "location": {
                    "type": "string",
                    "description": "Location can be \u003cspan pulumi-lang-nodejs=\"`global`\" pulumi-lang-dotnet=\"`Global`\" pulumi-lang-go=\"`global`\" pulumi-lang-python=\"`global`\" pulumi-lang-yaml=\"`global`\" pulumi-lang-java=\"`global`\" pulumi-lang-hcl=\"`global`\"\u003e`global`\u003c/span\u003e, regional like `us-east1`, or zonal like `us-west1-b`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The full resource name of this resource.. See [Resource Names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information.\n"
                },
                "networkTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags associated with this resource.\n"
                },
                "organization": {
                    "type": "string",
                    "description": "The organization that this resource belongs to, in the form of `organizations/{ORGANIZATION_NUMBER}`. This field is available when the resource belongs to an organization.\n"
                },
                "parentAssetType": {
                    "type": "string",
                    "description": "The type of this resource's immediate parent, if there is one.\n"
                },
                "parentFullResourceName": {
                    "type": "string",
                    "description": "The full resource name of this resource's parent, if it has one.\n"
                },
                "project": {
                    "type": "string",
                    "description": "The project that this resource belongs to, in the form of `projects/{project_number}`.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The state of this resource.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The last update timestamp of this resource, at which the resource was last modified or deleted.\n"
                }
            },
            "type": "object",
            "required": [
                "assetType",
                "createTime",
                "description",
                "displayName",
                "folders",
                "kmsKeys",
                "labels",
                "location",
                "name",
                "networkTags",
                "organization",
                "parentAssetType",
                "parentFullResourceName",
                "project",
                "state",
                "updateTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/BitbucketServerConfigConnectedRepository:BitbucketServerConfigConnectedRepository": {
            "properties": {
                "projectKey": {
                    "type": "string",
                    "description": "Identifier for the project storing the repository.\n"
                },
                "repoSlug": {
                    "type": "string",
                    "description": "Identifier for the repository.\n"
                }
            },
            "type": "object",
            "required": [
                "projectKey",
                "repoSlug"
            ]
        },
        "gcp:cloudbuild/BitbucketServerConfigSecrets:BitbucketServerConfigSecrets": {
            "properties": {
                "adminAccessTokenVersionName": {
                    "type": "string",
                    "description": "The resource name for the admin access token's secret version.\n"
                },
                "readAccessTokenVersionName": {
                    "type": "string",
                    "description": "The resource name for the read access token's secret version.\n"
                },
                "webhookSecretVersionName": {
                    "type": "string",
                    "description": "Immutable. The resource name for the webhook secret's secret version. Once this field has been set, it cannot be changed.\nChanging this field will result in deleting/ recreating the resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "adminAccessTokenVersionName",
                "readAccessTokenVersionName",
                "webhookSecretVersionName"
            ]
        },
        "gcp:cloudbuild/TriggerApprovalConfig:TriggerApprovalConfig": {
            "properties": {
                "approvalRequired": {
                    "type": "boolean",
                    "description": "Whether or not approval is needed. If this is set on a build, it will become pending when run,\nand will need to be explicitly approved to start.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBitbucketServerTriggerConfig:TriggerBitbucketServerTriggerConfig": {
            "properties": {
                "bitbucketServerConfigResource": {
                    "type": "string",
                    "description": "The Bitbucket server config resource that this trigger config maps to.\n"
                },
                "projectKey": {
                    "type": "string",
                    "description": "Key of the project that the repo is in. For example: The key for https://mybitbucket.server/projects/TEST/repos/test-repo is \"TEST\".\n"
                },
                "pullRequest": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBitbucketServerTriggerConfigPullRequest:TriggerBitbucketServerTriggerConfigPullRequest",
                    "description": "Filter to match changes in pull requests.\nStructure is documented below.\n"
                },
                "push": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBitbucketServerTriggerConfigPush:TriggerBitbucketServerTriggerConfigPush",
                    "description": "Filter to match changes in refs like branches, tags.\nStructure is documented below.\n"
                },
                "repoSlug": {
                    "type": "string",
                    "description": "Slug of the repository. A repository slug is a URL-friendly version of a repository name, automatically generated by Bitbucket for use in the URL.\nFor example, if the repository name is 'test repo', in the URL it would become 'test-repo' as in https://mybitbucket.server/projects/TEST/repos/test-repo.\n"
                }
            },
            "type": "object",
            "required": [
                "bitbucketServerConfigResource",
                "projectKey",
                "repoSlug"
            ]
        },
        "gcp:cloudbuild/TriggerBitbucketServerTriggerConfigPullRequest:TriggerBitbucketServerTriggerConfigPullRequest": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "commentControl": {
                    "type": "string",
                    "description": "Configure builds to run whether a repository owner or collaborator need to comment `/gcbrun`.\nPossible values are: `COMMENTS_DISABLED`, `COMMENTS_ENABLED`, `COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY`.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, branches that do NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003ewill trigger a build.\n"
                }
            },
            "type": "object",
            "required": [
                "branch"
            ]
        },
        "gcp:cloudbuild/TriggerBitbucketServerTriggerConfigPush:TriggerBitbucketServerTriggerConfigPush": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, only trigger a build if the revision regex does NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003eregex.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Regex of tags to match.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuild:TriggerBuild": {
            "properties": {
                "artifacts": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBuildArtifacts:TriggerBuildArtifacts",
                    "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps.\nStructure is documented below.\n"
                },
                "availableSecrets": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBuildAvailableSecrets:TriggerBuildAvailableSecrets",
                    "description": "Secrets and secret environment variables.\nStructure is documented below.\n"
                },
                "images": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of images to be pushed upon the successful completion of all build steps.\nThe images are pushed using the builder service account's credentials.\nThe digests of the pushed images will be stored in the Build resource's results field.\nIf any of the images fail to be pushed, the build status is marked FAILURE.\n"
                },
                "logsBucket": {
                    "type": "string",
                    "description": "Google Cloud Storage bucket where logs should be written.\nLogs file names will be of the format ${logsBucket}/log-${build_id}.txt.\n"
                },
                "options": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBuildOptions:TriggerBuildOptions",
                    "description": "Special options for this build.\nStructure is documented below.\n"
                },
                "queueTtl": {
                    "type": "string",
                    "description": "TTL in queue for this build. If provided and the build is enqueued longer than this value,\nthe build will expire and the build status will be EXPIRED.\nThe TTL starts ticking from createTime.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildSecret:TriggerBuildSecret"
                    },
                    "description": "Secrets to decrypt using Cloud Key Management Service.\nStructure is documented below.\n"
                },
                "source": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBuildSource:TriggerBuildSource",
                    "description": "The location of the source files to build.\nOne of `storageSource` or `repoSource` must be provided.\nStructure is documented below.\n"
                },
                "steps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildStep:TriggerBuildStep"
                    },
                    "description": "The operations to be performed on the workspace.\nStructure is documented below.\n"
                },
                "substitutions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Substitutions data for Build resource.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags for annotation of a Build. These are not docker tags.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Amount of time that this build should be allowed to run, to second granularity.\nIf this amount of time elapses, work on the build will cease and the build status will be TIMEOUT.\nThis timeout must be equal to or greater than the sum of the timeouts for build steps within the build.\nThe expected format is the number of seconds followed by s.\nDefault time is ten minutes (600s).\n"
                }
            },
            "type": "object",
            "required": [
                "steps"
            ]
        },
        "gcp:cloudbuild/TriggerBuildArtifacts:TriggerBuildArtifacts": {
            "properties": {
                "images": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of images to be pushed upon the successful completion of all build steps.\nThe images will be pushed using the builder service account's credentials.\nThe digests of the pushed images will be stored in the Build resource's results field.\nIf any of the images fail to be pushed, the build is marked FAILURE.\n"
                },
                "mavenArtifacts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildArtifactsMavenArtifact:TriggerBuildArtifactsMavenArtifact"
                    },
                    "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\nIf any objects fail to be pushed, the build is marked FAILURE.\nStructure is documented below.\n"
                },
                "npmPackages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildArtifactsNpmPackage:TriggerBuildArtifactsNpmPackage"
                    },
                    "description": "Npm package to upload to Artifact Registry upon successful completion of all build steps.\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\nIf any objects fail to be pushed, the build is marked FAILURE.\nStructure is documented below.\n"
                },
                "objects": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBuildArtifactsObjects:TriggerBuildArtifactsObjects",
                    "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps.\nFiles in the workspace matching specified paths globs will be uploaded to the\nCloud Storage location using the builder service account's credentials.\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\nIf any objects fail to be pushed, the build is marked FAILURE.\nStructure is documented below.\n"
                },
                "pythonPackages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildArtifactsPythonPackage:TriggerBuildArtifactsPythonPackage"
                    },
                    "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\nIf any objects fail to be pushed, the build is marked FAILURE.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuildArtifactsMavenArtifact:TriggerBuildArtifactsMavenArtifact": {
            "properties": {
                "artifactId": {
                    "type": "string",
                    "description": "Maven artifactId value used when uploading the artifact to Artifact Registry.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "Maven groupId value used when uploading the artifact to Artifact Registry.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\"\nArtifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Maven version value used when uploading the artifact to Artifact Registry.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuildArtifactsNpmPackage:TriggerBuildArtifactsNpmPackage": {
            "properties": {
                "packagePath": {
                    "type": "string",
                    "description": "Path to the package.json. e.g. workspace/path/to/package\n"
                },
                "repository": {
                    "type": "string",
                    "description": "Artifact Registry repository, in the form \"https://$REGION-npm.pkg.dev/$PROJECT/$REPOSITORY\"\nNpm package in the workspace specified by path will be zipped and uploaded to Artifact Registry with this location as a prefix.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuildArtifactsObjects:TriggerBuildArtifactsObjects": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\".\nFiles in the workspace matching any path pattern will be uploaded to Cloud Storage with\nthis location as a prefix.\n"
                },
                "paths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Path globs used to match files in the build's workspace.\n"
                },
                "timings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildArtifactsObjectsTiming:TriggerBuildArtifactsObjectsTiming"
                    },
                    "description": "(Output)\nOutput only. Stores timing information for pushing all artifact objects.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedBuildArtifactsObjectsTiming\"\" pulumi-lang-dotnet=\"\"NestedBuildArtifactsObjectsTiming\"\" pulumi-lang-go=\"\"nestedBuildArtifactsObjectsTiming\"\" pulumi-lang-python=\"\"nested_build_artifacts_objects_timing\"\" pulumi-lang-yaml=\"\"nestedBuildArtifactsObjectsTiming\"\" pulumi-lang-java=\"\"nestedBuildArtifactsObjectsTiming\"\" pulumi-lang-hcl=\"\"nested_build_artifacts_objects_timing\"\"\u003e\"nestedBuildArtifactsObjectsTiming\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`timing`\" pulumi-lang-dotnet=\"`Timing`\" pulumi-lang-go=\"`timing`\" pulumi-lang-python=\"`timing`\" pulumi-lang-yaml=\"`timing`\" pulumi-lang-java=\"`timing`\" pulumi-lang-hcl=\"`timing`\"\u003e`timing`\u003c/span\u003e block contains:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "timings"
                    ]
                }
            }
        },
        "gcp:cloudbuild/TriggerBuildArtifactsObjectsTiming:TriggerBuildArtifactsObjectsTiming": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "End of time span.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to\nnine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Start of time span.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to\nnine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuildArtifactsPythonPackage:TriggerBuildArtifactsPythonPackage": {
            "properties": {
                "paths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually dist/*, and sometimes additionally an .asc file.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\"\nFiles in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuildAvailableSecrets:TriggerBuildAvailableSecrets": {
            "properties": {
                "secretManagers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildAvailableSecretsSecretManager:TriggerBuildAvailableSecretsSecretManager"
                    },
                    "description": "Pairs a secret environment variable with a SecretVersion in Secret Manager.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "secretManagers"
            ]
        },
        "gcp:cloudbuild/TriggerBuildAvailableSecretsSecretManager:TriggerBuildAvailableSecretsSecretManager": {
            "properties": {
                "env": {
                    "type": "string",
                    "description": "Environment variable name to associate with the secret. Secret environment\nvariables must be unique across all of a build's secrets, and must be used\nby at least one build step.\n"
                },
                "versionName": {
                    "type": "string",
                    "description": "Resource name of the SecretVersion. In format: projects/*/secrets/*/versions/*\n"
                }
            },
            "type": "object",
            "required": [
                "env",
                "versionName"
            ]
        },
        "gcp:cloudbuild/TriggerBuildOptions:TriggerBuildOptions": {
            "properties": {
                "diskSizeGb": {
                    "type": "integer",
                    "description": "Requested disk size for the VM that runs the build. Note that this is NOT \"disk free\";\nsome of the space will be used by the operating system and build utilities.\nAlso note that this is the minimum disk size that will be allocated for the build --\nthe build may run with a larger disk than requested. At present, the maximum disk size\nis 1000GB; builds that request more than the maximum are rejected with an error.\n"
                },
                "dynamicSubstitutions": {
                    "type": "boolean",
                    "description": "Option to specify whether or not to apply bash style string operations to the substitutions.\nNOTE this is always enabled for triggered builds and cannot be overridden in the build configuration file.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of global environment variable definitions that will exist for all build steps\nin this build. If a variable is defined in both globally and in a build step,\nthe variable will use the build step value.\nThe elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".\n"
                },
                "logStreamingOption": {
                    "type": "string",
                    "description": "Option to define build log streaming behavior to Google Cloud Storage.\nPossible values are: `STREAM_DEFAULT`, `STREAM_ON`, `STREAM_OFF`.\n"
                },
                "logging": {
                    "type": "string",
                    "description": "Option to specify the logging mode, which determines if and where build logs are stored.\nPossible values are: `LOGGING_UNSPECIFIED`, `LEGACY`, `GCS_ONLY`, `STACKDRIVER_ONLY`, `CLOUD_LOGGING_ONLY`, `NONE`.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "Compute Engine machine type on which to run the build.\n"
                },
                "requestedVerifyOption": {
                    "type": "string",
                    "description": "Requested verifiability options.\nPossible values are: `NOT_VERIFIED`, `VERIFIED`.\n"
                },
                "secretEnvs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of global environment variables, which are encrypted using a Cloud Key Management\nService crypto key. These values must be specified in the build's Secret. These variables\nwill be available to all build steps in this build.\n"
                },
                "sourceProvenanceHashes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Requested hash for SourceProvenance.\nEach value may be one of: `NONE`, `SHA256`, `MD5`.\n"
                },
                "substitutionOption": {
                    "type": "string",
                    "description": "Option to specify behavior when there is an error in the substitution checks.\nNOTE this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden\nin the build configuration file.\nPossible values are: `MUST_MATCH`, `ALLOW_LOOSE`.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildOptionsVolume:TriggerBuildOptionsVolume"
                    },
                    "description": "Global list of volumes to mount for ALL build steps\nEach volume is created as an empty volume prior to starting the build process.\nUpon completion of the build, volumes and their contents are discarded. Global\nvolume names and paths cannot conflict with the volumes defined a build step.\nUsing a global volume in a build with only one step is not valid as it is indicative\nof a build request with an incorrect configuration.\nStructure is documented below.\n"
                },
                "workerPool": {
                    "type": "string",
                    "description": "Option to specify a WorkerPool for the build. Format projects/{project}/workerPools/{workerPool}\nThis field is experimental.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuildOptionsVolume:TriggerBuildOptionsVolume": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the volume to mount.\nVolume names must be unique per build step and must be valid names for Docker volumes.\nEach named volume must be used by at least two build steps.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path at which to mount the volume.\nPaths must be absolute and cannot conflict with other volume paths on the same\nbuild step or with certain reserved volume paths.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuildSecret:TriggerBuildSecret": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Cloud KMS key name to use to decrypt these envs.\n"
                },
                "secretEnv": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of environment variable name to its encrypted value.\nSecret environment variables must be unique across all of a build's secrets,\nand must be used by at least one build step. Values can be at most 64 KB in size.\nThere can be at most 100 secret values across all of a build's secrets.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ]
        },
        "gcp:cloudbuild/TriggerBuildSource:TriggerBuildSource": {
            "properties": {
                "repoSource": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBuildSourceRepoSource:TriggerBuildSourceRepoSource",
                    "description": "Location of the source in a Google Cloud Source Repository.\nStructure is documented below.\n"
                },
                "storageSource": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerBuildSourceStorageSource:TriggerBuildSourceStorageSource",
                    "description": "Location of the source in an archive file in Google Cloud Storage.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerBuildSourceRepoSource:TriggerBuildSourceRepoSource": {
            "properties": {
                "branchName": {
                    "type": "string",
                    "description": "Regex matching branches to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThe syntax of the regular expressions accepted is the syntax accepted by RE2 and\ndescribed at https://github.com/google/re2/wiki/Syntax\n"
                },
                "commitSha": {
                    "type": "string",
                    "description": "Explicit commit SHA to build. Exactly one a of branch name, tag, or commit SHA must be provided.\n"
                },
                "dir": {
                    "type": "string",
                    "description": "Directory, relative to the source root, in which to run the build.\nThis must be a relative path. If a step's dir is specified and is an absolute path,\nthis value is ignored for that step's execution.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "Only trigger a build if the revision regex does NOT match the revision regex.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project that owns the Cloud Source Repository.\nIf omitted, the project ID requesting the build is assumed.\n"
                },
                "repoName": {
                    "type": "string",
                    "description": "Name of the Cloud Source Repository.\n"
                },
                "substitutions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Substitutions to use in a triggered build. Should only be used with triggers.run\n"
                },
                "tagName": {
                    "type": "string",
                    "description": "Regex matching tags to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThe syntax of the regular expressions accepted is the syntax accepted by RE2 and\ndescribed at https://github.com/google/re2/wiki/Syntax\n"
                }
            },
            "type": "object",
            "required": [
                "repoName"
            ]
        },
        "gcp:cloudbuild/TriggerBuildSourceStorageSource:TriggerBuildSourceStorageSource": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Google Cloud Storage bucket containing the source.\n"
                },
                "generation": {
                    "type": "string",
                    "description": "Google Cloud Storage generation for the object.\nIf the generation is omitted, the latest generation will be used\n"
                },
                "object": {
                    "type": "string",
                    "description": "Google Cloud Storage object containing the source.\nThis object must be a gzipped archive file (.tar.gz) containing source to build.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "object"
            ]
        },
        "gcp:cloudbuild/TriggerBuildStep:TriggerBuildStep": {
            "properties": {
                "allowExitCodes": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Allow this build step to fail without failing the entire build if and\nonly if the exit code is one of the specified codes.\nIf `allowFailure` is also specified, this field will take precedence.\n"
                },
                "allowFailure": {
                    "type": "boolean",
                    "description": "Allow this build step to fail without failing the entire build.\nIf false, the entire build will fail if this step fails. Otherwise, the\nbuild will succeed, but this step will still have a failure status.\nError information will be reported in the `failureDetail` field.\n`allowExitCodes` takes precedence over this field.\n"
                },
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of arguments that will be presented to the step when it is started.\nIf the image used to run the step's container has an entrypoint, the args\nare used as arguments to that entrypoint. If the image does not define an\nentrypoint, the first element in args is used as the entrypoint, and the\nremainder will be used as arguments.\n"
                },
                "dir": {
                    "type": "string",
                    "description": "Working directory to use when running this step's container.\nIf this value is a relative path, it is relative to the build's working\ndirectory. If this value is absolute, it may be outside the build's working\ndirectory, in which case the contents of the path may not be persisted\nacross build step executions, unless a \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\" pulumi-lang-hcl=\"`volume`\"\u003e`volume`\u003c/span\u003e for that path is specified.\nIf the build specifies a `RepoSource` with \u003cspan pulumi-lang-nodejs=\"`dir`\" pulumi-lang-dotnet=\"`Dir`\" pulumi-lang-go=\"`dir`\" pulumi-lang-python=\"`dir`\" pulumi-lang-yaml=\"`dir`\" pulumi-lang-java=\"`dir`\" pulumi-lang-hcl=\"`dir`\"\u003e`dir`\u003c/span\u003e and a step with a\n\u003cspan pulumi-lang-nodejs=\"`dir`\" pulumi-lang-dotnet=\"`Dir`\" pulumi-lang-go=\"`dir`\" pulumi-lang-python=\"`dir`\" pulumi-lang-yaml=\"`dir`\" pulumi-lang-java=\"`dir`\" pulumi-lang-hcl=\"`dir`\"\u003e`dir`\u003c/span\u003e,\nwhich specifies an absolute path, the `RepoSource` \u003cspan pulumi-lang-nodejs=\"`dir`\" pulumi-lang-dotnet=\"`Dir`\" pulumi-lang-go=\"`dir`\" pulumi-lang-python=\"`dir`\" pulumi-lang-yaml=\"`dir`\" pulumi-lang-java=\"`dir`\" pulumi-lang-hcl=\"`dir`\"\u003e`dir`\u003c/span\u003e is ignored\nfor the step's execution.\n"
                },
                "entrypoint": {
                    "type": "string",
                    "description": "Entrypoint to be used instead of the build step image's\ndefault entrypoint.\nIf unset, the image's default entrypoint is used\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of environment variable definitions to be used when\nrunning a step.\nThe elements are of the form \"KEY=VALUE\" for the environment variable\n\"KEY\" being given the value \"VALUE\".\n"
                },
                "id": {
                    "type": "string",
                    "description": "Unique identifier for this build step, used in \u003cspan pulumi-lang-nodejs=\"`waitFor`\" pulumi-lang-dotnet=\"`WaitFor`\" pulumi-lang-go=\"`waitFor`\" pulumi-lang-python=\"`wait_for`\" pulumi-lang-yaml=\"`waitFor`\" pulumi-lang-java=\"`waitFor`\" pulumi-lang-hcl=\"`wait_for`\"\u003e`waitFor`\u003c/span\u003e to\nreference this build step as a dependency.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container image that will run this particular build step.\nIf the image is available in the host's Docker daemon's cache, it will be\nrun directly. If not, the host will attempt to pull the image first, using\nthe builder service account's credentials if necessary.\nThe Docker daemon's cache will already have the latest versions of all of\nthe officially supported build steps (see https://github.com/GoogleCloudPlatform/cloud-builders\nfor images and examples).\nThe Docker daemon will also have cached many of the layers for some popular\nimages, like \"ubuntu\", \"debian\", but they will be refreshed at the time\nyou attempt to use them.\nIf you built an image in a previous build step, it will be stored in the\nhost's Docker daemon's cache and is available to use as the name for a\nlater build step.\n"
                },
                "script": {
                    "type": "string",
                    "description": "A shell script to be executed in the step.\nWhen script is provided, the user cannot specify the entrypoint or args.\n"
                },
                "secretEnvs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of environment variables which are encrypted using\na Cloud Key\nManagement Service crypto key. These values must be specified in\nthe build's `Secret`.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Time limit for executing this build step. If not defined,\nthe step has no\ntime limit and will be allowed to continue to run until either it\ncompletes or the build itself times out.\n"
                },
                "timing": {
                    "type": "string",
                    "description": "Output only. Stores timing information for executing this\nbuild step.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/TriggerBuildStepVolume:TriggerBuildStepVolume"
                    },
                    "description": "List of volumes to mount into the build step.\nEach volume is created as an empty volume prior to execution of the\nbuild step. Upon completion of the build, volumes and their contents\nare discarded.\nUsing a named volume in only one step is not valid as it is\nindicative of a build request with an incorrect configuration.\nStructure is documented below.\n"
                },
                "waitFors": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The ID(s) of the step(s) that this build step depends on.\nThis build step will not start until all the build steps in \u003cspan pulumi-lang-nodejs=\"`waitFor`\" pulumi-lang-dotnet=\"`WaitFor`\" pulumi-lang-go=\"`waitFor`\" pulumi-lang-python=\"`wait_for`\" pulumi-lang-yaml=\"`waitFor`\" pulumi-lang-java=\"`waitFor`\" pulumi-lang-hcl=\"`wait_for`\"\u003e`waitFor`\u003c/span\u003e\nhave completed successfully. If \u003cspan pulumi-lang-nodejs=\"`waitFor`\" pulumi-lang-dotnet=\"`WaitFor`\" pulumi-lang-go=\"`waitFor`\" pulumi-lang-python=\"`wait_for`\" pulumi-lang-yaml=\"`waitFor`\" pulumi-lang-java=\"`waitFor`\" pulumi-lang-hcl=\"`wait_for`\"\u003e`waitFor`\u003c/span\u003e is empty, this build step\nwill start when all previous build steps in the `Build.Steps` list\nhave completed successfully.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudbuild/TriggerBuildStepVolume:TriggerBuildStepVolume": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the volume to mount.\nVolume names must be unique per build step and must be valid names for Docker volumes.\nEach named volume must be used by at least two build steps.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path at which to mount the volume.\nPaths must be absolute and cannot conflict with other volume paths on the same\nbuild step or with certain reserved volume paths.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "path"
            ]
        },
        "gcp:cloudbuild/TriggerDeveloperConnectEventConfig:TriggerDeveloperConnectEventConfig": {
            "properties": {
                "gitRepositoryLink": {
                    "type": "string",
                    "description": "The Developer Connect Git repository link, formatted as `projects/*/locations/*/connections/*/gitRepositoryLink/*`.\n"
                },
                "gitRepositoryLinkType": {
                    "type": "string",
                    "description": "(Output)\nThe type of DeveloperConnect GitRepositoryLink.\n"
                },
                "pullRequest": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerDeveloperConnectEventConfigPullRequest:TriggerDeveloperConnectEventConfigPullRequest",
                    "description": "Filter to match changes in pull requests.\nStructure is documented below.\n"
                },
                "push": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerDeveloperConnectEventConfigPush:TriggerDeveloperConnectEventConfigPush",
                    "description": "Filter to match changes in refs like branches and tags.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "gitRepositoryLink"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "gitRepositoryLink",
                        "gitRepositoryLinkType"
                    ]
                }
            }
        },
        "gcp:cloudbuild/TriggerDeveloperConnectEventConfigPullRequest:TriggerDeveloperConnectEventConfigPullRequest": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "commentControl": {
                    "type": "string",
                    "description": "Configure builds to run whether a repository owner or collaborator need to comment `/gcbrun`.\nPossible values are: `COMMENTS_DISABLED`, `COMMENTS_ENABLED`, `COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY`.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, branches that do NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003ewill trigger a build.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerDeveloperConnectEventConfigPush:TriggerDeveloperConnectEventConfigPush": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, only trigger a build if the revision regex does NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003eregex.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Regex of tags to match.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerGitFileSource:TriggerGitFileSource": {
            "properties": {
                "bitbucketServerConfig": {
                    "type": "string",
                    "description": "The full resource name of the bitbucket server config.\nFormat: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}.\n"
                },
                "githubEnterpriseConfig": {
                    "type": "string",
                    "description": "The full resource name of the github enterprise config.\nFormat: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The path of the file, with the repo root as the root of the path.\n"
                },
                "repoType": {
                    "type": "string",
                    "description": "The type of the repo, since it may not be explicit from the repo field (e.g from a URL).\nValues can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER\nPossible values are: `UNKNOWN`, `CLOUD_SOURCE_REPOSITORIES`, `GITHUB`, `BITBUCKET_SERVER`.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The fully qualified resource name of the Repo API repository. The fully qualified resource name of the Repo API repository.\nIf unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The branch, tag, arbitrary ref, or SHA version of the repo to use when resolving the\nfilename (optional). This field respects the same syntax/resolution as described here: https://git-scm.com/docs/gitrevisions\nIf unspecified, the revision from which the trigger invocation originated is assumed to be the revision from which to read the specified path.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The URI of the repo (optional). If unspecified, the repo from which the trigger\ninvocation originated is assumed to be the repo from which to read the specified path.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "repoType"
            ]
        },
        "gcp:cloudbuild/TriggerGithub:TriggerGithub": {
            "properties": {
                "enterpriseConfigResourceName": {
                    "type": "string",
                    "description": "The resource name of the github enterprise config that should be applied to this installation.\nFor example: \"projects/{$projectId}/locations/{$locationId}/githubEnterpriseConfigs/{$configId}\"\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the repository. For example: The name for\nhttps://github.com/googlecloudplatform/cloud-builders is \"cloud-builders\".\n"
                },
                "owner": {
                    "type": "string",
                    "description": "Owner of the repository. For example: The owner for\nhttps://github.com/googlecloudplatform/cloud-builders is \"googlecloudplatform\".\n"
                },
                "pullRequest": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerGithubPullRequest:TriggerGithubPullRequest",
                    "description": "filter to match changes in pull requests. Specify only one of \u003cspan pulumi-lang-nodejs=\"`pullRequest`\" pulumi-lang-dotnet=\"`PullRequest`\" pulumi-lang-go=\"`pullRequest`\" pulumi-lang-python=\"`pull_request`\" pulumi-lang-yaml=\"`pullRequest`\" pulumi-lang-java=\"`pullRequest`\" pulumi-lang-hcl=\"`pull_request`\"\u003e`pullRequest`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e.\nStructure is documented below.\n"
                },
                "push": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerGithubPush:TriggerGithubPush",
                    "description": "filter to match changes in refs, like branches or tags. Specify only one of \u003cspan pulumi-lang-nodejs=\"`pullRequest`\" pulumi-lang-dotnet=\"`PullRequest`\" pulumi-lang-go=\"`pullRequest`\" pulumi-lang-python=\"`pull_request`\" pulumi-lang-yaml=\"`pullRequest`\" pulumi-lang-java=\"`pullRequest`\" pulumi-lang-hcl=\"`pull_request`\"\u003e`pullRequest`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`push`\" pulumi-lang-dotnet=\"`Push`\" pulumi-lang-go=\"`push`\" pulumi-lang-python=\"`push`\" pulumi-lang-yaml=\"`push`\" pulumi-lang-java=\"`push`\" pulumi-lang-hcl=\"`push`\"\u003e`push`\u003c/span\u003e.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerGithubPullRequest:TriggerGithubPullRequest": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "commentControl": {
                    "type": "string",
                    "description": "Configure builds to run whether a repository owner or collaborator need to comment `/gcbrun`.\nPossible values are: `COMMENTS_DISABLED`, `COMMENTS_ENABLED`, `COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY`.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, branches that do NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003ewill trigger a build.\n"
                }
            },
            "type": "object",
            "required": [
                "branch"
            ]
        },
        "gcp:cloudbuild/TriggerGithubPush:TriggerGithubPush": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, only trigger a build if the revision regex does NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003eregex.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Regex of tags to match.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerPubsubConfig:TriggerPubsubConfig": {
            "properties": {
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "Service account that will make the push request.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nPotential issues with the underlying Pub/Sub subscription configuration.\nOnly populated on get requests.\n"
                },
                "subscription": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Name of the subscription.\n"
                },
                "topic": {
                    "type": "string",
                    "description": "The name of the topic from which this subscription is receiving messages.\n"
                }
            },
            "type": "object",
            "required": [
                "topic"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state",
                        "subscription",
                        "topic"
                    ]
                }
            }
        },
        "gcp:cloudbuild/TriggerRepositoryEventConfig:TriggerRepositoryEventConfig": {
            "properties": {
                "pullRequest": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerRepositoryEventConfigPullRequest:TriggerRepositoryEventConfigPullRequest",
                    "description": "Contains filter properties for matching Pull Requests.\nStructure is documented below.\n"
                },
                "push": {
                    "$ref": "#/types/gcp:cloudbuild/TriggerRepositoryEventConfigPush:TriggerRepositoryEventConfigPush",
                    "description": "Contains filter properties for matching git pushes.\nStructure is documented below.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The resource name of the Repo API resource.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerRepositoryEventConfigPullRequest:TriggerRepositoryEventConfigPullRequest": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "commentControl": {
                    "type": "string",
                    "description": "Configure builds to run whether a repository owner or collaborator need to comment `/gcbrun`.\nPossible values are: `COMMENTS_DISABLED`, `COMMENTS_ENABLED`, `COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY`.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, branches that do NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003ewill trigger a build.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerRepositoryEventConfigPush:TriggerRepositoryEventConfigPush": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, only trigger a build if the revision regex does NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003eregex.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Regex of tags to match.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuild/TriggerSourceToBuild:TriggerSourceToBuild": {
            "properties": {
                "bitbucketServerConfig": {
                    "type": "string",
                    "description": "The full resource name of the bitbucket server config.\nFormat: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}.\n"
                },
                "githubEnterpriseConfig": {
                    "type": "string",
                    "description": "The full resource name of the github enterprise config.\nFormat: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "The branch or tag to use. Must start with \"refs/\" (required).\n"
                },
                "repoType": {
                    "type": "string",
                    "description": "The type of the repo, since it may not be explicit from the repo field (e.g from a URL).\nValues can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER\nPossible values are: `UNKNOWN`, `CLOUD_SOURCE_REPOSITORIES`, `GITHUB`, `BITBUCKET_SERVER`.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The qualified resource name of the Repo API repository.\nEither uri or repository can be specified and is required.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The URI of the repo.\n"
                }
            },
            "type": "object",
            "required": [
                "ref",
                "repoType"
            ]
        },
        "gcp:cloudbuild/TriggerTriggerTemplate:TriggerTriggerTemplate": {
            "properties": {
                "branchName": {
                    "type": "string",
                    "description": "Name of the branch to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThis field is a regular expression.\n"
                },
                "commitSha": {
                    "type": "string",
                    "description": "Explicit commit SHA to build. Exactly one of a branch name, tag, or commit SHA must be provided.\n"
                },
                "dir": {
                    "type": "string",
                    "description": "Directory, relative to the source root, in which to run the build.\nThis must be a relative path. If a step's dir is specified and\nis an absolute path, this value is ignored for that step's\nexecution.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "Only trigger a build if the revision regex does NOT match the revision regex.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project that owns the Cloud Source Repository. If\nomitted, the project ID requesting the build is assumed.\n"
                },
                "repoName": {
                    "type": "string",
                    "description": "Name of the Cloud Source Repository. If omitted, the name \"default\" is assumed.\n"
                },
                "tagName": {
                    "type": "string",
                    "description": "Name of the tag to build. Exactly one of a branch name, tag, or commit SHA must be provided.\nThis field is a regular expression.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "projectId"
                    ]
                }
            }
        },
        "gcp:cloudbuild/TriggerWebhookConfig:TriggerWebhookConfig": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "Resource name for the secret required as a URL parameter.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nPotential issues with the underlying Pub/Sub subscription configuration.\nOnly populated on get requests.\n"
                }
            },
            "type": "object",
            "required": [
                "secret"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "secret",
                        "state"
                    ]
                }
            }
        },
        "gcp:cloudbuild/WorkerPoolNetworkConfig:WorkerPoolNetworkConfig": {
            "properties": {
                "peeredNetwork": {
                    "type": "string",
                    "description": "Immutable. The network definition that the workers are peered to. If this section is left empty, the workers will be peered to `WorkerPool.project_id` on the service producer network. Must be in the format `projects/{project}/global/networks/{network}`, where `{project}` is a project number, such as \u003cspan pulumi-lang-nodejs=\"`12345`\" pulumi-lang-dotnet=\"`12345`\" pulumi-lang-go=\"`12345`\" pulumi-lang-python=\"`12345`\" pulumi-lang-yaml=\"`12345`\" pulumi-lang-java=\"`12345`\" pulumi-lang-hcl=\"`12345`\"\u003e`12345`\u003c/span\u003e, and `{network}` is the name of a VPC network in the project. See (https://cloud.google.com/cloud-build/docs/custom-workers/set-up-custom-worker-pool-environment#understanding_the_network_configuration_options)\n",
                    "willReplaceOnChanges": true
                },
                "peeredNetworkIpRange": {
                    "type": "string",
                    "description": "Immutable. Subnet IP range within the peered network. This is specified in CIDR notation with a slash and the subnet prefix size. You can optionally specify an IP address before the subnet prefix value. e.g. `192.168.0.0/29` would specify an IP range starting at 192.168.0.0 with a prefix size of 29 bits. `/16` would specify a prefix size of 16 bits, with an automatically determined IP within the peered VPC. If unspecified, a value of `/24` will be used.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "peeredNetwork"
            ]
        },
        "gcp:cloudbuild/WorkerPoolPrivateServiceConnect:WorkerPoolPrivateServiceConnect": {
            "properties": {
                "networkAttachment": {
                    "type": "string",
                    "description": "Required. Immutable. The network attachment that the worker network interface is connected to. Must be in the format `projects/{project}/regions/{region}/networkAttachments/{networkAttachment}`. The region of network attachment must be the same as the worker pool. See [Network Attachments](https://cloud.google.com/vpc/docs/about-network-attachments)\n",
                    "willReplaceOnChanges": true
                },
                "routeAllTraffic": {
                    "type": "boolean",
                    "description": "Immutable. Route all traffic through PSC interface. Enable this if you want full control of traffic in the private pool. Configure Cloud NAT for the subnet of network attachment if you need to access public Internet. If false, Only route private IPs, e.g. 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16 through PSC interface.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "networkAttachment"
            ]
        },
        "gcp:cloudbuild/WorkerPoolWorkerConfig:WorkerPoolWorkerConfig": {
            "properties": {
                "diskSizeGb": {
                    "type": "integer",
                    "description": "Size of the disk attached to the worker, in GB. See [diskSizeGb](https://cloud.google.com/build/docs/private-pools/private-pool-config-file-schema#disksizegb). Specify a value of up to 1000. If \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\" pulumi-lang-hcl=\"`0`\"\u003e`0`\u003c/span\u003e is specified, Cloud Build will use a standard disk size.\n"
                },
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Enable nested virtualization on the worker, if supported by the machine type. See [Worker pool config file](https://cloud.google.com/build/docs/private-pools/worker-pool-config-file-schema). If left blank, Cloud Build will set this to false.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "Machine type of a worker, such as `n1-standard-1`. See [machineType](https://cloud.google.com/build/docs/private-pools/private-pool-config-file-schema#machinetype). If left blank, Cloud Build will use `n1-standard-1`.\n"
                },
                "noExternalIp": {
                    "type": "boolean",
                    "description": "If true, workers are created without any public address, which prevents network egress to public IPs.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "noExternalIp"
                    ]
                }
            }
        },
        "gcp:cloudbuild/getTriggerApprovalConfig:getTriggerApprovalConfig": {
            "properties": {
                "approvalRequired": {
                    "type": "boolean",
                    "description": "Whether or not approval is needed. If this is set on a build, it will become pending when run,\nand will need to be explicitly approved to start.\n"
                }
            },
            "type": "object",
            "required": [
                "approvalRequired"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBitbucketServerTriggerConfig:getTriggerBitbucketServerTriggerConfig": {
            "properties": {
                "bitbucketServerConfigResource": {
                    "type": "string",
                    "description": "The Bitbucket server config resource that this trigger config maps to.\n"
                },
                "projectKey": {
                    "type": "string",
                    "description": "Key of the project that the repo is in. For example: The key for https://mybitbucket.server/projects/TEST/repos/test-repo is \"TEST\".\n"
                },
                "pullRequests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBitbucketServerTriggerConfigPullRequest:getTriggerBitbucketServerTriggerConfigPullRequest"
                    },
                    "description": "Filter to match changes in pull requests.\n"
                },
                "pushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBitbucketServerTriggerConfigPush:getTriggerBitbucketServerTriggerConfigPush"
                    },
                    "description": "Filter to match changes in refs like branches, tags.\n"
                },
                "repoSlug": {
                    "type": "string",
                    "description": "Slug of the repository. A repository slug is a URL-friendly version of a repository name, automatically generated by Bitbucket for use in the URL.\nFor example, if the repository name is 'test repo', in the URL it would become 'test-repo' as in https://mybitbucket.server/projects/TEST/repos/test-repo.\n"
                }
            },
            "type": "object",
            "required": [
                "bitbucketServerConfigResource",
                "projectKey",
                "pullRequests",
                "pushes",
                "repoSlug"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBitbucketServerTriggerConfigPullRequest:getTriggerBitbucketServerTriggerConfigPullRequest": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\nThe syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax\n"
                },
                "commentControl": {
                    "type": "string",
                    "description": "Configure builds to run whether a repository owner or collaborator need to comment /gcbrun. Possible values: [\"COMMENTS_DISABLED\", \"COMMENTS_ENABLED\", \"COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY\"]\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, branches that do NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003ewill trigger a build.\n"
                }
            },
            "type": "object",
            "required": [
                "branch",
                "commentControl",
                "invertRegex"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBitbucketServerTriggerConfigPush:getTriggerBitbucketServerTriggerConfigPush": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.  Specify only one of branch or tag.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "When true, only trigger a build if the revision regex does NOT match the gitRef regex.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Regex of tags to match.  Specify only one of branch or tag.\n"
                }
            },
            "type": "object",
            "required": [
                "branch",
                "invertRegex",
                "tag"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuild:getTriggerBuild": {
            "properties": {
                "artifacts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildArtifact:getTriggerBuildArtifact"
                    },
                    "description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps.\n"
                },
                "availableSecrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildAvailableSecret:getTriggerBuildAvailableSecret"
                    },
                    "description": "Secrets and secret environment variables.\n"
                },
                "images": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of images to be pushed upon the successful completion of all build steps.\nThe images are pushed using the builder service account's credentials.\nThe digests of the pushed images will be stored in the Build resource's results field.\nIf any of the images fail to be pushed, the build status is marked FAILURE.\n"
                },
                "logsBucket": {
                    "type": "string",
                    "description": "Google Cloud Storage bucket where logs should be written.\nLogs file names will be of the format ${logsBucket}/log-${build_id}.txt.\n"
                },
                "options": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildOption:getTriggerBuildOption"
                    },
                    "description": "Special options for this build.\n"
                },
                "queueTtl": {
                    "type": "string",
                    "description": "TTL in queue for this build. If provided and the build is enqueued longer than this value,\nthe build will expire and the build status will be EXPIRED.\nThe TTL starts ticking from createTime.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildSecret:getTriggerBuildSecret"
                    },
                    "description": "Secrets to decrypt using Cloud Key Management Service.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildSource:getTriggerBuildSource"
                    },
                    "description": "The location of the source files to build.\n\nOne of 'storageSource' or 'repoSource' must be provided.\n"
                },
                "steps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildStep:getTriggerBuildStep"
                    },
                    "description": "The operations to be performed on the workspace.\n"
                },
                "substitutions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Substitutions data for Build resource.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Tags for annotation of a Build. These are not docker tags.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Amount of time that this build should be allowed to run, to second granularity.\nIf this amount of time elapses, work on the build will cease and the build status will be TIMEOUT.\nThis timeout must be equal to or greater than the sum of the timeouts for build steps within the build.\nThe expected format is the number of seconds followed by s.\nDefault time is ten minutes (600s).\n"
                }
            },
            "type": "object",
            "required": [
                "artifacts",
                "availableSecrets",
                "images",
                "logsBucket",
                "options",
                "queueTtl",
                "secrets",
                "sources",
                "steps",
                "substitutions",
                "tags",
                "timeout"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildArtifact:getTriggerBuildArtifact": {
            "properties": {
                "images": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of images to be pushed upon the successful completion of all build steps.\n\nThe images will be pushed using the builder service account's credentials.\n\nThe digests of the pushed images will be stored in the Build resource's results field.\n\nIf any of the images fail to be pushed, the build is marked FAILURE.\n"
                },
                "mavenArtifacts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildArtifactMavenArtifact:getTriggerBuildArtifactMavenArtifact"
                    },
                    "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.\n\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\n\nIf any objects fail to be pushed, the build is marked FAILURE.\n"
                },
                "npmPackages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildArtifactNpmPackage:getTriggerBuildArtifactNpmPackage"
                    },
                    "description": "Npm package to upload to Artifact Registry upon successful completion of all build steps.\n\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\n\nIf any objects fail to be pushed, the build is marked FAILURE.\n"
                },
                "objects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildArtifactObject:getTriggerBuildArtifactObject"
                    },
                    "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps.\n\nFiles in the workspace matching specified paths globs will be uploaded to the\nCloud Storage location using the builder service account's credentials.\n\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\n\nIf any objects fail to be pushed, the build is marked FAILURE.\n"
                },
                "pythonPackages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildArtifactPythonPackage:getTriggerBuildArtifactPythonPackage"
                    },
                    "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.\n\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\n\nIf any objects fail to be pushed, the build is marked FAILURE.\n"
                }
            },
            "type": "object",
            "required": [
                "images",
                "mavenArtifacts",
                "npmPackages",
                "objects",
                "pythonPackages"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildArtifactMavenArtifact:getTriggerBuildArtifactMavenArtifact": {
            "properties": {
                "artifactId": {
                    "type": "string",
                    "description": "Maven artifactId value used when uploading the artifact to Artifact Registry.\n"
                },
                "groupId": {
                    "type": "string",
                    "description": "Maven groupId value used when uploading the artifact to Artifact Registry.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\"\n\nArtifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Maven version value used when uploading the artifact to Artifact Registry.\n"
                }
            },
            "type": "object",
            "required": [
                "artifactId",
                "groupId",
                "path",
                "repository",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildArtifactNpmPackage:getTriggerBuildArtifactNpmPackage": {
            "properties": {
                "packagePath": {
                    "type": "string",
                    "description": "Path to the package.json. e.g. workspace/path/to/package\n"
                },
                "repository": {
                    "type": "string",
                    "description": "Artifact Registry repository, in the form \"https://$REGION-npm.pkg.dev/$PROJECT/$REPOSITORY\"\n\nNpm package in the workspace specified by path will be zipped and uploaded to Artifact Registry with this location as a prefix.\n"
                }
            },
            "type": "object",
            "required": [
                "packagePath",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildArtifactObject:getTriggerBuildArtifactObject": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The Cloud Build location for the trigger.\n\n- - -\n"
                },
                "paths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Path globs used to match files in the build's workspace.\n"
                },
                "timings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildArtifactObjectTiming:getTriggerBuildArtifactObjectTiming"
                    },
                    "description": "Output only. Stores timing information for pushing all artifact objects.\n"
                }
            },
            "type": "object",
            "required": [
                "location",
                "paths",
                "timings"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildArtifactObjectTiming:getTriggerBuildArtifactObjectTiming": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "End of time span.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to\nnine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Start of time span.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to\nnine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                }
            },
            "type": "object",
            "required": [
                "endTime",
                "startTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildArtifactPythonPackage:getTriggerBuildArtifactPythonPackage": {
            "properties": {
                "paths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually dist/*, and sometimes additionally an .asc file.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\"\n\nFiles in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.\n"
                }
            },
            "type": "object",
            "required": [
                "paths",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildAvailableSecret:getTriggerBuildAvailableSecret": {
            "properties": {
                "secretManagers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildAvailableSecretSecretManager:getTriggerBuildAvailableSecretSecretManager"
                    },
                    "description": "Pairs a secret environment variable with a SecretVersion in Secret Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "secretManagers"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildAvailableSecretSecretManager:getTriggerBuildAvailableSecretSecretManager": {
            "properties": {
                "env": {
                    "type": "string",
                    "description": "Environment variable name to associate with the secret. Secret environment\nvariables must be unique across all of a build's secrets, and must be used\nby at least one build step.\n"
                },
                "versionName": {
                    "type": "string",
                    "description": "Resource name of the SecretVersion. In format: projects/*/secrets/*/versions/*\n"
                }
            },
            "type": "object",
            "required": [
                "env",
                "versionName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildOption:getTriggerBuildOption": {
            "properties": {
                "diskSizeGb": {
                    "type": "integer",
                    "description": "Requested disk size for the VM that runs the build. Note that this is NOT \"disk free\";\nsome of the space will be used by the operating system and build utilities.\nAlso note that this is the minimum disk size that will be allocated for the build --\nthe build may run with a larger disk than requested. At present, the maximum disk size\nis 1000GB; builds that request more than the maximum are rejected with an error.\n"
                },
                "dynamicSubstitutions": {
                    "type": "boolean",
                    "description": "Option to specify whether or not to apply bash style string operations to the substitutions.\n\nNOTE this is always enabled for triggered builds and cannot be overridden in the build configuration file.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of global environment variable definitions that will exist for all build steps\nin this build. If a variable is defined in both globally and in a build step,\nthe variable will use the build step value.\n\nThe elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".\n"
                },
                "logStreamingOption": {
                    "type": "string",
                    "description": "Option to define build log streaming behavior to Google Cloud Storage. Possible values: [\"STREAM_DEFAULT\", \"STREAM_ON\", \"STREAM_OFF\"]\n"
                },
                "logging": {
                    "type": "string",
                    "description": "Option to specify the logging mode, which determines if and where build logs are stored. Possible values: [\"LOGGING_UNSPECIFIED\", \"LEGACY\", \"GCS_ONLY\", \"STACKDRIVER_ONLY\", \"CLOUD_LOGGING_ONLY\", \"NONE\"]\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "Compute Engine machine type on which to run the build.\n"
                },
                "requestedVerifyOption": {
                    "type": "string",
                    "description": "Requested verifiability options. Possible values: [\"NOT_VERIFIED\", \"VERIFIED\"]\n"
                },
                "secretEnvs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of global environment variables, which are encrypted using a Cloud Key Management\nService crypto key. These values must be specified in the build's Secret. These variables\nwill be available to all build steps in this build.\n"
                },
                "sourceProvenanceHashes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Requested hash for SourceProvenance. Possible values: [\"NONE\", \"SHA256\", \"MD5\"]\n"
                },
                "substitutionOption": {
                    "type": "string",
                    "description": "Option to specify behavior when there is an error in the substitution checks.\n\nNOTE this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden\nin the build configuration file. Possible values: [\"MUST_MATCH\", \"ALLOW_LOOSE\"]\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildOptionVolume:getTriggerBuildOptionVolume"
                    },
                    "description": "Global list of volumes to mount for ALL build steps\n\nEach volume is created as an empty volume prior to starting the build process.\nUpon completion of the build, volumes and their contents are discarded. Global\nvolume names and paths cannot conflict with the volumes defined a build step.\n\nUsing a global volume in a build with only one step is not valid as it is indicative\nof a build request with an incorrect configuration.\n"
                },
                "workerPool": {
                    "type": "string",
                    "description": "Option to specify a WorkerPool for the build. Format projects/{project}/workerPools/{workerPool}\n\nThis field is experimental.\n"
                }
            },
            "type": "object",
            "required": [
                "diskSizeGb",
                "dynamicSubstitutions",
                "envs",
                "logStreamingOption",
                "logging",
                "machineType",
                "requestedVerifyOption",
                "secretEnvs",
                "sourceProvenanceHashes",
                "substitutionOption",
                "volumes",
                "workerPool"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildOptionVolume:getTriggerBuildOptionVolume": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the volume to mount.\n\nVolume names must be unique per build step and must be valid names for Docker volumes.\nEach named volume must be used by at least two build steps.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path at which to mount the volume.\n\nPaths must be absolute and cannot conflict with other volume paths on the same\nbuild step or with certain reserved volume paths.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildSecret:getTriggerBuildSecret": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Cloud KMS key name to use to decrypt these envs.\n"
                },
                "secretEnv": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of environment variable name to its encrypted value.\nSecret environment variables must be unique across all of a build's secrets,\nand must be used by at least one build step. Values can be at most 64 KB in size.\nThere can be at most 100 secret values across all of a build's secrets.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName",
                "secretEnv"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildSource:getTriggerBuildSource": {
            "properties": {
                "repoSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildSourceRepoSource:getTriggerBuildSourceRepoSource"
                    },
                    "description": "Location of the source in a Google Cloud Source Repository.\n"
                },
                "storageSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildSourceStorageSource:getTriggerBuildSourceStorageSource"
                    },
                    "description": "Location of the source in an archive file in Google Cloud Storage.\n"
                }
            },
            "type": "object",
            "required": [
                "repoSources",
                "storageSources"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildSourceRepoSource:getTriggerBuildSourceRepoSource": {
            "properties": {
                "branchName": {
                    "type": "string",
                    "description": "Regex matching branches to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThe syntax of the regular expressions accepted is the syntax accepted by RE2 and\ndescribed at https://github.com/google/re2/wiki/Syntax\n"
                },
                "commitSha": {
                    "type": "string",
                    "description": "Explicit commit SHA to build. Exactly one a of branch name, tag, or commit SHA must be provided.\n"
                },
                "dir": {
                    "type": "string",
                    "description": "Directory, relative to the source root, in which to run the build.\nThis must be a relative path. If a step's dir is specified and is an absolute path,\nthis value is ignored for that step's execution.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "Only trigger a build if the revision regex does NOT match the revision regex.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project that owns the Cloud Source Repository.\nIf omitted, the project ID requesting the build is assumed.\n"
                },
                "repoName": {
                    "type": "string",
                    "description": "Name of the Cloud Source Repository.\n"
                },
                "substitutions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Substitutions to use in a triggered build. Should only be used with triggers.run\n"
                },
                "tagName": {
                    "type": "string",
                    "description": "Regex matching tags to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThe syntax of the regular expressions accepted is the syntax accepted by RE2 and\ndescribed at https://github.com/google/re2/wiki/Syntax\n"
                }
            },
            "type": "object",
            "required": [
                "branchName",
                "commitSha",
                "dir",
                "invertRegex",
                "projectId",
                "repoName",
                "substitutions",
                "tagName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildSourceStorageSource:getTriggerBuildSourceStorageSource": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Google Cloud Storage bucket containing the source.\n"
                },
                "generation": {
                    "type": "string",
                    "description": "Google Cloud Storage generation for the object.\nIf the generation is omitted, the latest generation will be used\n"
                },
                "object": {
                    "type": "string",
                    "description": "Google Cloud Storage object containing the source.\nThis object must be a gzipped archive file (.tar.gz) containing source to build.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "generation",
                "object"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildStep:getTriggerBuildStep": {
            "properties": {
                "allowExitCodes": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Allow this build step to fail without failing the entire build if and\nonly if the exit code is one of the specified codes.\n\nIf 'allowFailure' is also specified, this field will take precedence.\n"
                },
                "allowFailure": {
                    "type": "boolean",
                    "description": "Allow this build step to fail without failing the entire build.\nIf false, the entire build will fail if this step fails. Otherwise, the\nbuild will succeed, but this step will still have a failure status.\nError information will be reported in the 'failureDetail' field.\n\n'allowExitCodes' takes precedence over this field.\n"
                },
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an entrypoint, the args\nare used as arguments to that entrypoint. If the image does not define an\nentrypoint, the first element in args is used as the entrypoint, and the\nremainder will be used as arguments.\n"
                },
                "dir": {
                    "type": "string",
                    "description": "Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working\ndirectory. If this value is absolute, it may be outside the build's working\ndirectory, in which case the contents of the path may not be persisted\nacross build step executions, unless a 'volume' for that path is specified.\n\nIf the build specifies a 'RepoSource' with 'dir' and a step with a\n'dir',\nwhich specifies an absolute path, the 'RepoSource' 'dir' is ignored\nfor the step's execution.\n"
                },
                "entrypoint": {
                    "type": "string",
                    "description": "Entrypoint to be used instead of the build step image's\ndefault entrypoint.\nIf unset, the image's default entrypoint is used\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of environment variable definitions to be used when\nrunning a step.\n\nThe elements are of the form \"KEY=VALUE\" for the environment variable\n\"KEY\" being given the value \"VALUE\".\n"
                },
                "id": {
                    "type": "string",
                    "description": "Unique identifier for this build step, used in 'wait_for' to\nreference this build step as a dependency.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container image that will run this particular build step.\n\nIf the image is available in the host's Docker daemon's cache, it will be\nrun directly. If not, the host will attempt to pull the image first, using\nthe builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of\nthe officially supported build steps (see https://github.com/GoogleCloudPlatform/cloud-builders\nfor images and examples).\nThe Docker daemon will also have cached many of the layers for some popular\nimages, like \"ubuntu\", \"debian\", but they will be refreshed at the time\nyou attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the\nhost's Docker daemon's cache and is available to use as the name for a\nlater build step.\n"
                },
                "script": {
                    "type": "string",
                    "description": "A shell script to be executed in the step.\nWhen script is provided, the user cannot specify the entrypoint or args.\n"
                },
                "secretEnvs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of environment variables which are encrypted using\na Cloud Key\nManagement Service crypto key. These values must be specified in\nthe build's 'Secret'.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Time limit for executing this build step. If not defined,\nthe step has no\ntime limit and will be allowed to continue to run until either it\ncompletes or the build itself times out.\n"
                },
                "timing": {
                    "type": "string",
                    "description": "Output only. Stores timing information for executing this\nbuild step.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerBuildStepVolume:getTriggerBuildStepVolume"
                    },
                    "description": "List of volumes to mount into the build step.\n\nEach volume is created as an empty volume prior to execution of the\nbuild step. Upon completion of the build, volumes and their contents\nare discarded.\n\nUsing a named volume in only one step is not valid as it is\nindicative of a build request with an incorrect configuration.\n"
                },
                "waitFors": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The ID(s) of the step(s) that this build step depends on.\n\nThis build step will not start until all the build steps in 'wait_for'\nhave completed successfully. If 'wait_for' is empty, this build step\nwill start when all previous build steps in the 'Build.Steps' list\nhave completed successfully.\n"
                }
            },
            "type": "object",
            "required": [
                "allowExitCodes",
                "allowFailure",
                "args",
                "dir",
                "entrypoint",
                "envs",
                "id",
                "name",
                "script",
                "secretEnvs",
                "timeout",
                "timing",
                "volumes",
                "waitFors"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerBuildStepVolume:getTriggerBuildStepVolume": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the volume to mount.\n\nVolume names must be unique per build step and must be valid names for\nDocker volumes. Each named volume must be used by at least two build steps.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path at which to mount the volume.\n\nPaths must be absolute and cannot conflict with other volume paths on\nthe same build step or with certain reserved volume paths.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerDeveloperConnectEventConfig:getTriggerDeveloperConnectEventConfig": {
            "properties": {
                "gitRepositoryLink": {
                    "type": "string",
                    "description": "The Developer Connect Git repository link, formatted as 'projects/*/locations/*/connections/*/gitRepositoryLink/*'.\n"
                },
                "gitRepositoryLinkType": {
                    "type": "string",
                    "description": "The type of DeveloperConnect GitRepositoryLink.\n"
                },
                "pullRequests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerDeveloperConnectEventConfigPullRequest:getTriggerDeveloperConnectEventConfigPullRequest"
                    },
                    "description": "Filter to match changes in pull requests.\n"
                },
                "pushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerDeveloperConnectEventConfigPush:getTriggerDeveloperConnectEventConfigPush"
                    },
                    "description": "Filter to match changes in refs like branches and tags.\n"
                }
            },
            "type": "object",
            "required": [
                "gitRepositoryLink",
                "gitRepositoryLinkType",
                "pullRequests",
                "pushes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerDeveloperConnectEventConfigPullRequest:getTriggerDeveloperConnectEventConfigPullRequest": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "commentControl": {
                    "type": "string",
                    "description": "Configure builds to run whether a repository owner or collaborator need to comment '/gcbrun'. Possible values: [\"COMMENTS_DISABLED\", \"COMMENTS_ENABLED\", \"COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY\"]\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, branches that do NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003ewill trigger a build.\n"
                }
            },
            "type": "object",
            "required": [
                "branch",
                "commentControl",
                "invertRegex"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerDeveloperConnectEventConfigPush:getTriggerDeveloperConnectEventConfigPush": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, only trigger a build if the revision regex does NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003eregex.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Regex of tags to match.\n"
                }
            },
            "type": "object",
            "required": [
                "branch",
                "invertRegex",
                "tag"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerGitFileSource:getTriggerGitFileSource": {
            "properties": {
                "bitbucketServerConfig": {
                    "type": "string",
                    "description": "The full resource name of the bitbucket server config.\nFormat: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}.\n"
                },
                "githubEnterpriseConfig": {
                    "type": "string",
                    "description": "The full resource name of the github enterprise config.\nFormat: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The path of the file, with the repo root as the root of the path.\n"
                },
                "repoType": {
                    "type": "string",
                    "description": "The type of the repo, since it may not be explicit from the repo field (e.g from a URL).\nValues can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER Possible values: [\"UNKNOWN\", \"CLOUD_SOURCE_REPOSITORIES\", \"GITHUB\", \"BITBUCKET_SERVER\"]\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The fully qualified resource name of the Repo API repository. The fully qualified resource name of the Repo API repository.\nIf unspecified, the repo from which the trigger invocation originated is assumed to be the repo from which to read the specified path.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The branch, tag, arbitrary ref, or SHA version of the repo to use when resolving the\nfilename (optional). This field respects the same syntax/resolution as described here: https://git-scm.com/docs/gitrevisions\nIf unspecified, the revision from which the trigger invocation originated is assumed to be the revision from which to read the specified path.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The URI of the repo (optional). If unspecified, the repo from which the trigger\ninvocation originated is assumed to be the repo from which to read the specified path.\n"
                }
            },
            "type": "object",
            "required": [
                "bitbucketServerConfig",
                "githubEnterpriseConfig",
                "path",
                "repoType",
                "repository",
                "revision",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerGithub:getTriggerGithub": {
            "properties": {
                "enterpriseConfigResourceName": {
                    "type": "string",
                    "description": "The resource name of the github enterprise config that should be applied to this installation.\nFor example: \"projects/{$projectId}/locations/{$locationId}/githubEnterpriseConfigs/{$configId}\"\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the repository. For example: The name for\nhttps://github.com/googlecloudplatform/cloud-builders is \"cloud-builders\".\n"
                },
                "owner": {
                    "type": "string",
                    "description": "Owner of the repository. For example: The owner for\nhttps://github.com/googlecloudplatform/cloud-builders is \"googlecloudplatform\".\n"
                },
                "pullRequests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerGithubPullRequest:getTriggerGithubPullRequest"
                    },
                    "description": "filter to match changes in pull requests. Specify only one of 'pull_request' or 'push'.\n"
                },
                "pushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerGithubPush:getTriggerGithubPush"
                    },
                    "description": "filter to match changes in refs, like branches or tags. Specify only one of 'pull_request' or 'push'.\n"
                }
            },
            "type": "object",
            "required": [
                "enterpriseConfigResourceName",
                "name",
                "owner",
                "pullRequests",
                "pushes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerGithubPullRequest:getTriggerGithubPullRequest": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n"
                },
                "commentControl": {
                    "type": "string",
                    "description": "Whether to block builds on a \"/gcbrun\" comment from a repository owner or collaborator. Possible values: [\"COMMENTS_DISABLED\", \"COMMENTS_ENABLED\", \"COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY\"]\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, branches that do NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003ewill trigger a build.\n"
                }
            },
            "type": "object",
            "required": [
                "branch",
                "commentControl",
                "invertRegex"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerGithubPush:getTriggerGithubPush": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.  Specify only one of branch or tag.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "When true, only trigger a build if the revision regex does NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003eregex.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Regex of tags to match.  Specify only one of branch or tag.\n"
                }
            },
            "type": "object",
            "required": [
                "branch",
                "invertRegex",
                "tag"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerPubsubConfig:getTriggerPubsubConfig": {
            "properties": {
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "Service account that will make the push request.\n"
                },
                "state": {
                    "type": "string",
                    "description": "Potential issues with the underlying Pub/Sub subscription configuration.\nOnly populated on get requests.\n"
                },
                "subscription": {
                    "type": "string",
                    "description": "Output only. Name of the subscription.\n"
                },
                "topic": {
                    "type": "string",
                    "description": "The name of the topic from which this subscription is receiving messages.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccountEmail",
                "state",
                "subscription",
                "topic"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerRepositoryEventConfig:getTriggerRepositoryEventConfig": {
            "properties": {
                "pullRequests": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerRepositoryEventConfigPullRequest:getTriggerRepositoryEventConfigPullRequest"
                    },
                    "description": "Contains filter properties for matching Pull Requests.\n"
                },
                "pushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudbuild/getTriggerRepositoryEventConfigPush:getTriggerRepositoryEventConfigPush"
                    },
                    "description": "Contains filter properties for matching git pushes.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The resource name of the Repo API resource.\n"
                }
            },
            "type": "object",
            "required": [
                "pullRequests",
                "pushes",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerRepositoryEventConfigPullRequest:getTriggerRepositoryEventConfigPullRequest": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax\n"
                },
                "commentControl": {
                    "type": "string",
                    "description": "Configure builds to run whether a repository owner or collaborator need to comment '/gcbrun'. Possible values: [\"COMMENTS_DISABLED\", \"COMMENTS_ENABLED\", \"COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY\"]\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, branches that do NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003ewill trigger a build.\n"
                }
            },
            "type": "object",
            "required": [
                "branch",
                "commentControl",
                "invertRegex"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerRepositoryEventConfigPush:getTriggerRepositoryEventConfigPush": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "Regex of branches to match.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "If true, only trigger a build if the revision regex does NOT match the\u003cspan pulumi-lang-nodejs=\" gitRef \" pulumi-lang-dotnet=\" GitRef \" pulumi-lang-go=\" gitRef \" pulumi-lang-python=\" git_ref \" pulumi-lang-yaml=\" gitRef \" pulumi-lang-java=\" gitRef \" pulumi-lang-hcl=\" git_ref \"\u003e gitRef \u003c/span\u003eregex.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Regex of tags to match.\n\nThe syntax of the regular expressions accepted is the syntax accepted by\nRE2 and described at https://github.com/google/re2/wiki/Syntax\n"
                }
            },
            "type": "object",
            "required": [
                "branch",
                "invertRegex",
                "tag"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerSourceToBuild:getTriggerSourceToBuild": {
            "properties": {
                "bitbucketServerConfig": {
                    "type": "string",
                    "description": "The full resource name of the bitbucket server config.\nFormat: projects/{project}/locations/{location}/bitbucketServerConfigs/{id}.\n"
                },
                "githubEnterpriseConfig": {
                    "type": "string",
                    "description": "The full resource name of the github enterprise config.\nFormat: projects/{project}/locations/{location}/githubEnterpriseConfigs/{id}. projects/{project}/githubEnterpriseConfigs/{id}.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "The branch or tag to use. Must start with \"refs/\" (required).\n"
                },
                "repoType": {
                    "type": "string",
                    "description": "The type of the repo, since it may not be explicit from the repo field (e.g from a URL).\nValues can be UNKNOWN, CLOUD_SOURCE_REPOSITORIES, GITHUB, BITBUCKET_SERVER Possible values: [\"UNKNOWN\", \"CLOUD_SOURCE_REPOSITORIES\", \"GITHUB\", \"BITBUCKET_SERVER\"]\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The qualified resource name of the Repo API repository.\nEither uri or repository can be specified and is required.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The URI of the repo.\n"
                }
            },
            "type": "object",
            "required": [
                "bitbucketServerConfig",
                "githubEnterpriseConfig",
                "ref",
                "repoType",
                "repository",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerTriggerTemplate:getTriggerTriggerTemplate": {
            "properties": {
                "branchName": {
                    "type": "string",
                    "description": "Name of the branch to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThis field is a regular expression.\n"
                },
                "commitSha": {
                    "type": "string",
                    "description": "Explicit commit SHA to build. Exactly one of a branch name, tag, or commit SHA must be provided.\n"
                },
                "dir": {
                    "type": "string",
                    "description": "Directory, relative to the source root, in which to run the build.\n\nThis must be a relative path. If a step's dir is specified and\nis an absolute path, this value is ignored for that step's\nexecution.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "Only trigger a build if the revision regex does NOT match the revision regex.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project that owns the Cloud Source Repository. If\nomitted, the project ID requesting the build is assumed.\n"
                },
                "repoName": {
                    "type": "string",
                    "description": "Name of the Cloud Source Repository. If omitted, the name \"default\" is assumed.\n"
                },
                "tagName": {
                    "type": "string",
                    "description": "Name of the tag to build. Exactly one of a branch name, tag, or commit SHA must be provided.\nThis field is a regular expression.\n"
                }
            },
            "type": "object",
            "required": [
                "branchName",
                "commitSha",
                "dir",
                "invertRegex",
                "projectId",
                "repoName",
                "tagName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuild/getTriggerWebhookConfig:getTriggerWebhookConfig": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "Resource name for the secret required as a URL parameter.\n"
                },
                "state": {
                    "type": "string",
                    "description": "Potential issues with the underlying Pub/Sub subscription configuration.\nOnly populated on get requests.\n"
                }
            },
            "type": "object",
            "required": [
                "secret",
                "state"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionBitbucketCloudConfig:ConnectionBitbucketCloudConfig": {
            "properties": {
                "authorizerCredential": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionBitbucketCloudConfigAuthorizerCredential:ConnectionBitbucketCloudConfigAuthorizerCredential",
                    "description": "Required. An access token with the \u003cspan pulumi-lang-nodejs=\"`webhook`\" pulumi-lang-dotnet=\"`Webhook`\" pulumi-lang-go=\"`webhook`\" pulumi-lang-python=\"`webhook`\" pulumi-lang-yaml=\"`webhook`\" pulumi-lang-java=\"`webhook`\" pulumi-lang-hcl=\"`webhook`\"\u003e`webhook`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`repository`\" pulumi-lang-dotnet=\"`Repository`\" pulumi-lang-go=\"`repository`\" pulumi-lang-python=\"`repository`\" pulumi-lang-yaml=\"`repository`\" pulumi-lang-java=\"`repository`\" pulumi-lang-hcl=\"`repository`\"\u003e`repository`\u003c/span\u003e, `repository:admin` and \u003cspan pulumi-lang-nodejs=\"`pullrequest`\" pulumi-lang-dotnet=\"`Pullrequest`\" pulumi-lang-go=\"`pullrequest`\" pulumi-lang-python=\"`pullrequest`\" pulumi-lang-yaml=\"`pullrequest`\" pulumi-lang-java=\"`pullrequest`\" pulumi-lang-hcl=\"`pullrequest`\"\u003e`pullrequest`\u003c/span\u003e scope access. It can be either a workspace, project or repository access token. It's recommended to use a system account to generate these credentials.\nStructure is documented below.\n"
                },
                "readAuthorizerCredential": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionBitbucketCloudConfigReadAuthorizerCredential:ConnectionBitbucketCloudConfigReadAuthorizerCredential",
                    "description": "Required. An access token with the \u003cspan pulumi-lang-nodejs=\"`repository`\" pulumi-lang-dotnet=\"`Repository`\" pulumi-lang-go=\"`repository`\" pulumi-lang-python=\"`repository`\" pulumi-lang-yaml=\"`repository`\" pulumi-lang-java=\"`repository`\" pulumi-lang-hcl=\"`repository`\"\u003e`repository`\u003c/span\u003e access. It can be either a workspace, project or repository access token. It's recommended to use a system account to generate the credentials.\nStructure is documented below.\n"
                },
                "webhookSecretSecretVersion": {
                    "type": "string",
                    "description": "Required. Immutable. SecretManager resource containing the webhook secret used to verify webhook events, formatted as `projects/*/secrets/*/versions/*`.\n",
                    "willReplaceOnChanges": true
                },
                "workspace": {
                    "type": "string",
                    "description": "The Bitbucket Cloud Workspace ID to be connected to Google Cloud Platform.\n"
                }
            },
            "type": "object",
            "required": [
                "authorizerCredential",
                "readAuthorizerCredential",
                "webhookSecretSecretVersion",
                "workspace"
            ]
        },
        "gcp:cloudbuildv2/ConnectionBitbucketCloudConfigAuthorizerCredential:ConnectionBitbucketCloudConfigAuthorizerCredential": {
            "properties": {
                "userTokenSecretVersion": {
                    "type": "string",
                    "description": "Required. A SecretManager resource containing the user token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`.\n"
                },
                "username": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The username associated to this token.\n"
                }
            },
            "type": "object",
            "required": [
                "userTokenSecretVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "userTokenSecretVersion",
                        "username"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionBitbucketCloudConfigReadAuthorizerCredential:ConnectionBitbucketCloudConfigReadAuthorizerCredential": {
            "properties": {
                "userTokenSecretVersion": {
                    "type": "string",
                    "description": "Required. A SecretManager resource containing the user token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`.\n"
                },
                "username": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The username associated to this token.\n"
                }
            },
            "type": "object",
            "required": [
                "userTokenSecretVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "userTokenSecretVersion",
                        "username"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionBitbucketDataCenterConfig:ConnectionBitbucketDataCenterConfig": {
            "properties": {
                "authorizerCredential": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionBitbucketDataCenterConfigAuthorizerCredential:ConnectionBitbucketDataCenterConfigAuthorizerCredential",
                    "description": "Required. A http access token with the `REPO_ADMIN` scope access.\nStructure is documented below.\n"
                },
                "hostUri": {
                    "type": "string",
                    "description": "The URI of the Bitbucket Data Center host this connection is for.\n"
                },
                "readAuthorizerCredential": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionBitbucketDataCenterConfigReadAuthorizerCredential:ConnectionBitbucketDataCenterConfigReadAuthorizerCredential",
                    "description": "Required. A http access token with the `REPO_READ` access.\nStructure is documented below.\n"
                },
                "serverVersion": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Version of the Bitbucket Data Center running on the \u003cspan pulumi-lang-nodejs=\"`hostUri`\" pulumi-lang-dotnet=\"`HostUri`\" pulumi-lang-go=\"`hostUri`\" pulumi-lang-python=\"`host_uri`\" pulumi-lang-yaml=\"`hostUri`\" pulumi-lang-java=\"`hostUri`\" pulumi-lang-hcl=\"`host_uri`\"\u003e`hostUri`\u003c/span\u003e.\n"
                },
                "serviceDirectoryConfig": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionBitbucketDataCenterConfigServiceDirectoryConfig:ConnectionBitbucketDataCenterConfigServiceDirectoryConfig",
                    "description": "Configuration for using Service Directory to privately connect to a Bitbucket Data Center. This should only be set if the Bitbucket Data Center is hosted on-premises and not reachable by public internet. If this field is left empty, calls to the Bitbucket Data Center will be made over the public internet.\nStructure is documented below.\n"
                },
                "sslCa": {
                    "type": "string",
                    "description": "SSL certificate to use for requests to the Bitbucket Data Center.\n"
                },
                "webhookSecretSecretVersion": {
                    "type": "string",
                    "description": "Required. Immutable. SecretManager resource containing the webhook secret used to verify webhook events, formatted as `projects/*/secrets/*/versions/*`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "authorizerCredential",
                "hostUri",
                "readAuthorizerCredential",
                "webhookSecretSecretVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "authorizerCredential",
                        "hostUri",
                        "readAuthorizerCredential",
                        "serverVersion",
                        "webhookSecretSecretVersion"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionBitbucketDataCenterConfigAuthorizerCredential:ConnectionBitbucketDataCenterConfigAuthorizerCredential": {
            "properties": {
                "userTokenSecretVersion": {
                    "type": "string",
                    "description": "Required. A SecretManager resource containing the user token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`.\n"
                },
                "username": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The username associated to this token.\n"
                }
            },
            "type": "object",
            "required": [
                "userTokenSecretVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "userTokenSecretVersion",
                        "username"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionBitbucketDataCenterConfigReadAuthorizerCredential:ConnectionBitbucketDataCenterConfigReadAuthorizerCredential": {
            "properties": {
                "userTokenSecretVersion": {
                    "type": "string",
                    "description": "Required. A SecretManager resource containing the user token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`.\n"
                },
                "username": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The username associated to this token.\n"
                }
            },
            "type": "object",
            "required": [
                "userTokenSecretVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "userTokenSecretVersion",
                        "username"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionBitbucketDataCenterConfigServiceDirectoryConfig:ConnectionBitbucketDataCenterConfigServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "Required. The Service Directory service name. Format: projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}.\n"
                }
            },
            "type": "object",
            "required": [
                "service"
            ]
        },
        "gcp:cloudbuildv2/ConnectionGithubConfig:ConnectionGithubConfig": {
            "properties": {
                "appInstallationId": {
                    "type": "integer",
                    "description": "GitHub App installation id.\n"
                },
                "authorizerCredential": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionGithubConfigAuthorizerCredential:ConnectionGithubConfigAuthorizerCredential",
                    "description": "OAuth credential of the account that authorized the Cloud Build GitHub App. It is recommended to use a robot account instead of a human user account. The OAuth token must be tied to the Cloud Build GitHub App.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudbuildv2/ConnectionGithubConfigAuthorizerCredential:ConnectionGithubConfigAuthorizerCredential": {
            "properties": {
                "oauthTokenSecretVersion": {
                    "type": "string",
                    "description": "A SecretManager resource containing the OAuth token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`.\n"
                },
                "username": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The username associated to this token.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "username"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionGithubEnterpriseConfig:ConnectionGithubEnterpriseConfig": {
            "properties": {
                "appId": {
                    "type": "integer",
                    "description": "Id of the GitHub App created from the manifest.\n"
                },
                "appInstallationId": {
                    "type": "integer",
                    "description": "ID of the installation of the GitHub App.\n"
                },
                "appSlug": {
                    "type": "string",
                    "description": "The URL-friendly name of the GitHub App.\n"
                },
                "hostUri": {
                    "type": "string",
                    "description": "Required. The URI of the GitHub Enterprise host this connection is for.\n"
                },
                "privateKeySecretVersion": {
                    "type": "string",
                    "description": "SecretManager resource containing the private key of the GitHub App, formatted as `projects/*/secrets/*/versions/*`.\n"
                },
                "serviceDirectoryConfig": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionGithubEnterpriseConfigServiceDirectoryConfig:ConnectionGithubEnterpriseConfigServiceDirectoryConfig",
                    "description": "Configuration for using Service Directory to privately connect to a GitHub Enterprise server. This should only be set if the GitHub Enterprise server is hosted on-premises and not reachable by public internet. If this field is left empty, calls to the GitHub Enterprise server will be made over the public internet.\nStructure is documented below.\n"
                },
                "sslCa": {
                    "type": "string",
                    "description": "SSL certificate to use for requests to GitHub Enterprise.\n"
                },
                "webhookSecretSecretVersion": {
                    "type": "string",
                    "description": "SecretManager resource containing the webhook secret of the GitHub App, formatted as `projects/*/secrets/*/versions/*`.\n"
                }
            },
            "type": "object",
            "required": [
                "hostUri"
            ]
        },
        "gcp:cloudbuildv2/ConnectionGithubEnterpriseConfigServiceDirectoryConfig:ConnectionGithubEnterpriseConfigServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "Required. The Service Directory service name. Format: projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}.\n"
                }
            },
            "type": "object",
            "required": [
                "service"
            ]
        },
        "gcp:cloudbuildv2/ConnectionGitlabConfig:ConnectionGitlabConfig": {
            "properties": {
                "authorizerCredential": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionGitlabConfigAuthorizerCredential:ConnectionGitlabConfigAuthorizerCredential",
                    "description": "Required. A GitLab personal access token with the \u003cspan pulumi-lang-nodejs=\"`api`\" pulumi-lang-dotnet=\"`Api`\" pulumi-lang-go=\"`api`\" pulumi-lang-python=\"`api`\" pulumi-lang-yaml=\"`api`\" pulumi-lang-java=\"`api`\" pulumi-lang-hcl=\"`api`\"\u003e`api`\u003c/span\u003e scope access.\nStructure is documented below.\n"
                },
                "hostUri": {
                    "type": "string",
                    "description": "The URI of the GitLab Enterprise host this connection is for. If not specified, the default value is https://gitlab.com.\n"
                },
                "readAuthorizerCredential": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionGitlabConfigReadAuthorizerCredential:ConnectionGitlabConfigReadAuthorizerCredential",
                    "description": "Required. A GitLab personal access token with the minimum \u003cspan pulumi-lang-nodejs=\"`readApi`\" pulumi-lang-dotnet=\"`ReadApi`\" pulumi-lang-go=\"`readApi`\" pulumi-lang-python=\"`read_api`\" pulumi-lang-yaml=\"`readApi`\" pulumi-lang-java=\"`readApi`\" pulumi-lang-hcl=\"`read_api`\"\u003e`readApi`\u003c/span\u003e scope access.\nStructure is documented below.\n"
                },
                "serverVersion": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Version of the GitLab Enterprise server running on the \u003cspan pulumi-lang-nodejs=\"`hostUri`\" pulumi-lang-dotnet=\"`HostUri`\" pulumi-lang-go=\"`hostUri`\" pulumi-lang-python=\"`host_uri`\" pulumi-lang-yaml=\"`hostUri`\" pulumi-lang-java=\"`hostUri`\" pulumi-lang-hcl=\"`host_uri`\"\u003e`hostUri`\u003c/span\u003e.\n"
                },
                "serviceDirectoryConfig": {
                    "$ref": "#/types/gcp:cloudbuildv2/ConnectionGitlabConfigServiceDirectoryConfig:ConnectionGitlabConfigServiceDirectoryConfig",
                    "description": "Configuration for using Service Directory to privately connect to a GitLab Enterprise server. This should only be set if the GitLab Enterprise server is hosted on-premises and not reachable by public internet. If this field is left empty, calls to the GitLab Enterprise server will be made over the public internet.\nStructure is documented below.\n"
                },
                "sslCa": {
                    "type": "string",
                    "description": "SSL certificate to use for requests to GitLab Enterprise.\n"
                },
                "webhookSecretSecretVersion": {
                    "type": "string",
                    "description": "Required. Immutable. SecretManager resource containing the webhook secret of a GitLab Enterprise project, formatted as `projects/*/secrets/*/versions/*`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "authorizerCredential",
                "readAuthorizerCredential",
                "webhookSecretSecretVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "authorizerCredential",
                        "hostUri",
                        "readAuthorizerCredential",
                        "serverVersion",
                        "webhookSecretSecretVersion"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionGitlabConfigAuthorizerCredential:ConnectionGitlabConfigAuthorizerCredential": {
            "properties": {
                "userTokenSecretVersion": {
                    "type": "string",
                    "description": "Required. A SecretManager resource containing the user token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`.\n"
                },
                "username": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The username associated to this token.\n"
                }
            },
            "type": "object",
            "required": [
                "userTokenSecretVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "userTokenSecretVersion",
                        "username"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionGitlabConfigReadAuthorizerCredential:ConnectionGitlabConfigReadAuthorizerCredential": {
            "properties": {
                "userTokenSecretVersion": {
                    "type": "string",
                    "description": "Required. A SecretManager resource containing the user token that authorizes the Cloud Build connection. Format: `projects/*/secrets/*/versions/*`.\n"
                },
                "username": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The username associated to this token.\n"
                }
            },
            "type": "object",
            "required": [
                "userTokenSecretVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "userTokenSecretVersion",
                        "username"
                    ]
                }
            }
        },
        "gcp:cloudbuildv2/ConnectionGitlabConfigServiceDirectoryConfig:ConnectionGitlabConfigServiceDirectoryConfig": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "Required. The Service Directory service name. Format: projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}.\n"
                }
            },
            "type": "object",
            "required": [
                "service"
            ]
        },
        "gcp:cloudbuildv2/ConnectionIAMBindingCondition:ConnectionIAMBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudbuildv2/ConnectionIAMMemberCondition:ConnectionIAMMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudbuildv2/ConnectionInstallationState:ConnectionInstallationState": {
            "properties": {
                "actionUri": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Link to follow for next action. Empty string if the installation is already complete.\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Message of what the user should do next to continue the installation. Empty string if the installation is already complete.\n"
                },
                "stage": {
                    "type": "string",
                    "description": "(Output)\nOutput only. Current step of the installation process.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "actionUri",
                        "message",
                        "stage"
                    ]
                }
            }
        },
        "gcp:clouddeploy/AutomationRule:AutomationRule": {
            "properties": {
                "advanceRolloutRule": {
                    "$ref": "#/types/gcp:clouddeploy/AutomationRuleAdvanceRolloutRule:AutomationRuleAdvanceRolloutRule",
                    "description": "Optional. The `AdvanceRolloutRule` will automatically advance a successful Rollout.\nStructure is documented below.\n"
                },
                "promoteReleaseRule": {
                    "$ref": "#/types/gcp:clouddeploy/AutomationRulePromoteReleaseRule:AutomationRulePromoteReleaseRule",
                    "description": "Optional. `PromoteReleaseRule` will automatically promote a release from the current target to a specified target.\nStructure is documented below.\n"
                },
                "repairRolloutRule": {
                    "$ref": "#/types/gcp:clouddeploy/AutomationRuleRepairRolloutRule:AutomationRuleRepairRolloutRule",
                    "description": "Optional. The RepairRolloutRule will automatically repair a failed rollout.\nStructure is documented below.\n"
                },
                "timedPromoteReleaseRule": {
                    "$ref": "#/types/gcp:clouddeploy/AutomationRuleTimedPromoteReleaseRule:AutomationRuleTimedPromoteReleaseRule",
                    "description": "Optional. The `TimedPromoteReleaseRule` will automatically promote a release from the current target(s) to the specified target(s) on a configured schedule.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/AutomationRuleAdvanceRolloutRule:AutomationRuleAdvanceRolloutRule": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "Required. ID of the rule. This id must be unique in the `Automation` resource to which this rule belongs. The format is `a-z{0,62}`.\n"
                },
                "sourcePhases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Proceeds only after phase name matched any one in the list. This value must consist of lower-case letters, numbers, and hyphens, start with a letter and end with a letter or a number, and have a max length of 63 characters. In other words, it must match the following regex: `^a-z?$`.\n"
                },
                "wait": {
                    "type": "string",
                    "description": "Optional. How long to wait after a rollout is finished.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:clouddeploy/AutomationRulePromoteReleaseRule:AutomationRulePromoteReleaseRule": {
            "properties": {
                "destinationPhase": {
                    "type": "string",
                    "description": "Optional. The starting phase of the rollout created by this operation. Default to the first phase.\n"
                },
                "destinationTargetId": {
                    "type": "string",
                    "description": "Optional. The ID of the stage in the pipeline to which this `Release` is deploying. If unspecified, default it to the next stage in the promotion flow. The value of this field could be one of the following: * The last segment of a target name. It only needs the ID to determine if the target is one of the stages in the promotion sequence defined in the pipeline. * \"@next\", the next target in the promotion sequence.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Required. ID of the rule. This id must be unique in the `Automation` resource to which this rule belongs. The format is `a-z{0,62}`.\n"
                },
                "wait": {
                    "type": "string",
                    "description": "Optional. How long the release need to be paused until being promoted to the next target.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:clouddeploy/AutomationRuleRepairRolloutRule:AutomationRuleRepairRolloutRule": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "Required. ID of the rule. This id must be unique in the `Automation` resource to which this rule belongs. The format is `a-z{0,62}`.\n"
                },
                "jobs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Jobs to repair. Proceeds only after job name matched any one in the list, or for all jobs if unspecified or empty. The phase that includes the job must match the phase ID specified in sourcePhase. This value must consist of lower-case letters, numbers, and hyphens, start with a letter and end with a letter or a number, and have a max length of 63 characters. In other words, it must match the following regex: ^a-z?$.\n"
                },
                "phases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Phases within which jobs are subject to automatic repair actions on failure. Proceeds only after phase name matched any one in the list, or for all phases if unspecified. This value must consist of lower-case letters, numbers, and hyphens, start with a letter and end with a letter or a number, and have a max length of 63 characters. In other words, it must match the following regex: ^a-z?$.\n"
                },
                "repairPhases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/AutomationRuleRepairRolloutRuleRepairPhase:AutomationRuleRepairRolloutRuleRepairPhase"
                    },
                    "description": "Optional. Proceeds only after phase name matched any one in the list. This value must consist of lower-case letters, numbers, and hyphens, start with a letter and end with a letter or a number, and have a max length of 63 characters. In other words, it must match the following regex: `^a-z?$`.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:clouddeploy/AutomationRuleRepairRolloutRuleRepairPhase:AutomationRuleRepairRolloutRuleRepairPhase": {
            "properties": {
                "retry": {
                    "$ref": "#/types/gcp:clouddeploy/AutomationRuleRepairRolloutRuleRepairPhaseRetry:AutomationRuleRepairRolloutRuleRepairPhaseRetry",
                    "description": "Optional. Retries a failed job.\nStructure is documented below.\n"
                },
                "rollback": {
                    "$ref": "#/types/gcp:clouddeploy/AutomationRuleRepairRolloutRuleRepairPhaseRollback:AutomationRuleRepairRolloutRuleRepairPhaseRollback",
                    "description": "Optional. Rolls back a Rollout.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/AutomationRuleRepairRolloutRuleRepairPhaseRetry:AutomationRuleRepairRolloutRuleRepairPhaseRetry": {
            "properties": {
                "attempts": {
                    "type": "string",
                    "description": "Required. Total number of retries. Retry is skipped if set to 0; The minimum value is 1, and the maximum value is 10.\n"
                },
                "backoffMode": {
                    "type": "string",
                    "description": "Optional. The pattern of how wait time will be increased. Default is linear. Backoff mode will be ignored if wait is 0.\nPossible values are: `BACKOFF_MODE_UNSPECIFIED`, `BACKOFF_MODE_LINEAR`, `BACKOFF_MODE_EXPONENTIAL`.\n"
                },
                "wait": {
                    "type": "string",
                    "description": "Optional. How long to wait for the first retry. Default is 0, and the maximum value is 14d. A duration in seconds with up to nine fractional digits, ending with 's'. Example: `3.5s`.\n"
                }
            },
            "type": "object",
            "required": [
                "attempts"
            ]
        },
        "gcp:clouddeploy/AutomationRuleRepairRolloutRuleRepairPhaseRollback:AutomationRuleRepairRolloutRuleRepairPhaseRollback": {
            "properties": {
                "destinationPhase": {
                    "type": "string",
                    "description": "Optional. The starting phase ID for the Rollout. If unspecified, the Rollout will start in the stable phase.\n"
                },
                "disableRollbackIfRolloutPending": {
                    "type": "boolean",
                    "description": "Optional. If pending rollout exists on the target, the rollback operation will be aborted.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/AutomationRuleTimedPromoteReleaseRule:AutomationRuleTimedPromoteReleaseRule": {
            "properties": {
                "destinationPhase": {
                    "type": "string",
                    "description": "Optional. The starting phase of the rollout created by this rule. Default to the first phase.\n"
                },
                "destinationTargetId": {
                    "type": "string",
                    "description": "Optional. The ID of the stage in the pipeline to which this Release is deploying. If unspecified, default it to the next stage in the promotion flow. The value of this field could be one of the following:\n- The last segment of a target name\n- \"@next\", the next target in the promotion sequence\"\n"
                },
                "id": {
                    "type": "string",
                    "description": "Required. ID of the rule. This id must be unique in the `Automation` resource to which this rule belongs. The format is `a-z{0,62}`.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "Required. Schedule in crontab format. e.g. `0 9 * * 1` for every Monday at 9am.\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "Required. The time zone in IANA format IANA Time Zone Database (e.g. America/New_York).\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "schedule",
                "timeZone"
            ]
        },
        "gcp:clouddeploy/AutomationSelector:AutomationSelector": {
            "properties": {
                "targets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/AutomationSelectorTarget:AutomationSelectorTarget"
                    },
                    "description": "Contains attributes about a target.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "targets"
            ]
        },
        "gcp:clouddeploy/AutomationSelectorTarget:AutomationSelectorTarget": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the `Target`. The value of this field could be one of the following: * The last segment of a target name. It only needs the ID to determine which target is being referred to * \"*\", all targets in a location.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Target labels.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "labels"
                    ]
                }
            }
        },
        "gcp:clouddeploy/CustomTargetTypeCustomActions:CustomTargetTypeCustomActions": {
            "properties": {
                "deployAction": {
                    "type": "string",
                    "description": "The Skaffold custom action responsible for deploy operations.\n"
                },
                "includeSkaffoldModules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/CustomTargetTypeCustomActionsIncludeSkaffoldModule:CustomTargetTypeCustomActionsIncludeSkaffoldModule"
                    },
                    "description": "List of Skaffold modules Cloud Deploy will include in the Skaffold Config as required before performing diagnose.\nStructure is documented below.\n"
                },
                "renderAction": {
                    "type": "string",
                    "description": "The Skaffold custom action responsible for render operations. If not provided then Cloud Deploy will perform the render operations via `skaffold render`.\n"
                }
            },
            "type": "object",
            "required": [
                "deployAction"
            ]
        },
        "gcp:clouddeploy/CustomTargetTypeCustomActionsIncludeSkaffoldModule:CustomTargetTypeCustomActionsIncludeSkaffoldModule": {
            "properties": {
                "configs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Skaffold Config modules to use from the specified source.\n"
                },
                "git": {
                    "$ref": "#/types/gcp:clouddeploy/CustomTargetTypeCustomActionsIncludeSkaffoldModuleGit:CustomTargetTypeCustomActionsIncludeSkaffoldModuleGit",
                    "description": "Remote git repository containing the Skaffold Config modules.\nStructure is documented below.\n"
                },
                "googleCloudBuildRepo": {
                    "$ref": "#/types/gcp:clouddeploy/CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepo:CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepo",
                    "description": "Cloud Build 2nd gen repository containing the Skaffold Config modules.\nStructure is documented below.\n"
                },
                "googleCloudStorage": {
                    "$ref": "#/types/gcp:clouddeploy/CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorage:CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorage",
                    "description": "Cloud Storage bucket containing Skaffold Config modules.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/CustomTargetTypeCustomActionsIncludeSkaffoldModuleGit:CustomTargetTypeCustomActionsIncludeSkaffoldModuleGit": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Relative path from the repository root to the Skaffold file.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "Git ref the package should be cloned from.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "Git repository the package should be cloned from.\n"
                }
            },
            "type": "object",
            "required": [
                "repo"
            ]
        },
        "gcp:clouddeploy/CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepo:CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudBuildRepo": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Relative path from the repository root to the Skaffold file.\n"
                },
                "ref": {
                    "type": "string",
                    "description": "Branch or tag to use when cloning the repository.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "Cloud Build 2nd gen repository in the format of 'projects/\u003cproject\u003e/locations/\u003clocation\u003e/connections/\u003cconnection\u003e/repositories/\u003crepository\u003e'.\n"
                }
            },
            "type": "object",
            "required": [
                "repository"
            ]
        },
        "gcp:clouddeploy/CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorage:CustomTargetTypeCustomActionsIncludeSkaffoldModuleGoogleCloudStorage": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Relative path from the source to the Skaffold file.\n"
                },
                "source": {
                    "type": "string",
                    "description": "Cloud Storage source paths to copy recursively. For example, providing `gs://my-bucket/dir/configs/*` will result in Skaffold copying all files within the `dir/configs` directory in the bucket `my-bucket`.\n"
                }
            },
            "type": "object",
            "required": [
                "source"
            ]
        },
        "gcp:clouddeploy/CustomTargetTypeIamBindingCondition:CustomTargetTypeIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:clouddeploy/CustomTargetTypeIamMemberCondition:CustomTargetTypeIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:clouddeploy/CustomTargetTypeTasks:CustomTargetTypeTasks": {
            "properties": {
                "deploy": {
                    "$ref": "#/types/gcp:clouddeploy/CustomTargetTypeTasksDeploy:CustomTargetTypeTasksDeploy",
                    "description": "The task responsible for deploy operations.\nStructure is documented below.\n"
                },
                "render": {
                    "$ref": "#/types/gcp:clouddeploy/CustomTargetTypeTasksRender:CustomTargetTypeTasksRender",
                    "description": "The task responsible for render operations. If not provided then Cloud Deploy will perform its default rendering operation.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "deploy"
            ]
        },
        "gcp:clouddeploy/CustomTargetTypeTasksDeploy:CustomTargetTypeTasksDeploy": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/CustomTargetTypeTasksDeployContainer:CustomTargetTypeTasksDeployContainer",
                    "description": "This task is represented by a container that is executed in the Cloud Build execution environment.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/CustomTargetTypeTasksDeployContainer:CustomTargetTypeTasksDeployContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/CustomTargetTypeTasksRender:CustomTargetTypeTasksRender": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/CustomTargetTypeTasksRenderContainer:CustomTargetTypeTasksRenderContainer",
                    "description": "This task is represented by a container that is executed in the Cloud Build execution environment.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/CustomTargetTypeTasksRenderContainer:CustomTargetTypeTasksRenderContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineCondition:DeliveryPipelineCondition": {
            "properties": {
                "pipelineReadyConditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineConditionPipelineReadyCondition:DeliveryPipelineConditionPipelineReadyCondition"
                    },
                    "description": "Details around the Pipeline's overall status.\n"
                },
                "targetsPresentConditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineConditionTargetsPresentCondition:DeliveryPipelineConditionTargetsPresentCondition"
                    },
                    "description": "Details around targets enumerated in the pipeline.\n"
                },
                "targetsTypeConditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineConditionTargetsTypeCondition:DeliveryPipelineConditionTargetsTypeCondition"
                    },
                    "description": "Details on the whether the targets enumerated in the pipeline are of the same type.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "pipelineReadyConditions",
                        "targetsPresentConditions",
                        "targetsTypeConditions"
                    ]
                }
            }
        },
        "gcp:clouddeploy/DeliveryPipelineConditionPipelineReadyCondition:DeliveryPipelineConditionPipelineReadyCondition": {
            "properties": {
                "status": {
                    "type": "boolean",
                    "description": "True if the Pipeline is in a valid state. Otherwise at least one condition in `PipelineCondition` is in an invalid state. Iterate over those conditions and see which condition(s) has status = false to find out what is wrong with the Pipeline.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "Output only. Most recent time at which the pipeline was updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "status",
                        "updateTime"
                    ]
                }
            }
        },
        "gcp:clouddeploy/DeliveryPipelineConditionTargetsPresentCondition:DeliveryPipelineConditionTargetsPresentCondition": {
            "properties": {
                "missingTargets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of Target names that are missing. For example, projects/{project_id}/locations/{location_name}/targets/{target_name}.\n"
                },
                "status": {
                    "type": "boolean",
                    "description": "True if there aren't any missing Targets.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "Output only. Most recent time at which the pipeline was updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "missingTargets",
                        "status",
                        "updateTime"
                    ]
                }
            }
        },
        "gcp:clouddeploy/DeliveryPipelineConditionTargetsTypeCondition:DeliveryPipelineConditionTargetsTypeCondition": {
            "properties": {
                "errorDetails": {
                    "type": "string",
                    "description": "Human readable error message.\n"
                },
                "status": {
                    "type": "boolean",
                    "description": "True if the targets are all a comparable type. For example this is true if all targets are GKE clusters. This is false if some targets are Cloud Run targets and others are GKE clusters.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errorDetails",
                        "status"
                    ]
                }
            }
        },
        "gcp:clouddeploy/DeliveryPipelineIamBindingCondition:DeliveryPipelineIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineIamMemberCondition:DeliveryPipelineIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipeline:DeliveryPipelineSerialPipeline": {
            "properties": {
                "stages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStage:DeliveryPipelineSerialPipelineStage"
                    },
                    "description": "Each stage specifies configuration for a `Target`. The ordering of this list defines the promotion flow.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStage:DeliveryPipelineSerialPipelineStage": {
            "properties": {
                "deployParameters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageDeployParameter:DeliveryPipelineSerialPipelineStageDeployParameter"
                    },
                    "description": "Optional. The deploy parameters to use for the target in this stage.\n"
                },
                "profiles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Skaffold profiles to use when rendering the manifest for this stage's `Target`.\n"
                },
                "strategy": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategy:DeliveryPipelineSerialPipelineStageStrategy",
                    "description": "Optional. The strategy to use for a `Rollout` to this stage.\n"
                },
                "targetId": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" targetId \" pulumi-lang-dotnet=\" TargetId \" pulumi-lang-go=\" targetId \" pulumi-lang-python=\" target_id \" pulumi-lang-yaml=\" targetId \" pulumi-lang-java=\" targetId \" pulumi-lang-hcl=\" target_id \"\u003e targetId \u003c/span\u003eto which this stage points. This field refers exclusively to the last segment of a target name. For example, this field would just be `my-target` (rather than `projects/project/locations/location/targets/my-target`). The location of the `Target` is inferred to be the same as the location of the `DeliveryPipeline` that contains this `Stage`.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageDeployParameter:DeliveryPipelineSerialPipelineStageDeployParameter": {
            "properties": {
                "matchTargetLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Deploy parameters are applied to targets with match labels. If unspecified, deploy parameters are applied to all targets (including child targets of a multi-target).\n"
                },
                "values": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Required. Values are deploy parameters in key-value pairs.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategy:DeliveryPipelineSerialPipelineStageStrategy": {
            "properties": {
                "canary": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanary:DeliveryPipelineSerialPipelineStageStrategyCanary",
                    "description": "Canary deployment strategy provides progressive percentage based deployments to a Target.\n"
                },
                "standard": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandard:DeliveryPipelineSerialPipelineStageStrategyStandard",
                    "description": "Standard deployment strategy executes a single deploy and allows verifying the deployment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanary:DeliveryPipelineSerialPipelineStageStrategyCanary": {
            "properties": {
                "canaryDeployment": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeployment:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeployment",
                    "description": "Configures the progressive based deployment for a Target.\n"
                },
                "customCanaryDeployment": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeployment:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeployment",
                    "description": "Configures the progressive based deployment for a Target, but allows customizing at the phase level where a phase represents each of the percentage deployments.\n"
                },
                "runtimeConfig": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfig:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfig",
                    "description": "Optional. Runtime specific configurations for the deployment strategy. The runtime configuration is used to determine how Cloud Deploy will split traffic to enable a progressive deployment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeployment:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeployment": {
            "properties": {
                "analysis": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysis:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysis",
                    "description": "Optional. Configuration for the analysis job.\n"
                },
                "percentages": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "Required. The percentage based deployments that will occur as a part of a `Rollout`. List is expected in ascending order and each integer n is 0 \u003c= n \u003c 100.\n"
                },
                "postdeploy": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentPostdeploy:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentPostdeploy",
                    "description": "Optional. Configuration for the postdeploy job of the last phase. If this is not configured, postdeploy job will not be present.\n"
                },
                "predeploy": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentPredeploy:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentPredeploy",
                    "description": "Optional. Configuration for the predeploy job of the first phase. If this is not configured, predeploy job will not be present.\n"
                },
                "verify": {
                    "type": "boolean",
                    "description": "Whether to run verify tests after each percentage deployment.\n"
                },
                "verifyConfig": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfig:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfig",
                    "description": "Optional. Configuration for the verify job.\n"
                }
            },
            "type": "object",
            "required": [
                "percentages"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysis:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysis": {
            "properties": {
                "customChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheck:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheck"
                    },
                    "description": "Optional. Custom analysis checks from 3P metric providers.\n"
                },
                "duration": {
                    "type": "string",
                    "description": "Required. The amount of time in minutes the analysis on the target will last. If all analysis checks have successfully completed before the specified duration, the analysis is successful. If a check is still running while the specified duration passes, it will wait for that check to complete to determine if the analysis is successful. The maximum duration is 48 hours.\n"
                },
                "googleCloud": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisGoogleCloud:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisGoogleCloud",
                    "description": "Optional. Google Cloud - based analysis checks.\n"
                }
            },
            "type": "object",
            "required": [
                "duration"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheck:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheck": {
            "properties": {
                "frequency": {
                    "type": "string",
                    "description": "Optional. The frequency at which the custom check will be run, with a minimum and default of 5 minutes.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Required. The ID of the custom Analysis check.\n"
                },
                "task": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheckTask:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheckTask",
                    "description": "Required. The Task to be run for this custom check.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheckTask:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheckTask": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheckTaskContainer:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheckTaskContainer",
                    "description": "Optional. This task is represented by a container that is executed in the Cloud Build execution environment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheckTaskContainer:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisCustomCheckTaskContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Required. Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisGoogleCloud:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisGoogleCloud": {
            "properties": {
                "alertPolicyChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisGoogleCloudAlertPolicyCheck:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisGoogleCloudAlertPolicyCheck"
                    },
                    "description": "Optional. A list of Cloud Monitoring Alert Policy checks to perform as part of the analysis.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisGoogleCloudAlertPolicyCheck:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentAnalysisGoogleCloudAlertPolicyCheck": {
            "properties": {
                "alertPolicies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. The Cloud Monitoring Alert Policies to check for active alerts. Format is `projects/{project}/alertPolicies/{alert_policy}`.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Required. The ID of the analysis check.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. A set of labels to filter active alerts. If set, only alerts having all of the specified labels will be considered. Otherwise, all active alerts will be considered.\n"
                }
            },
            "type": "object",
            "required": [
                "alertPolicies",
                "id"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentPostdeploy:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentPostdeploy": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A sequence of skaffold custom actions to invoke during execution of the postdeploy job.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentPredeploy:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentPredeploy": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A sequence of skaffold custom actions to invoke during execution of the predeploy job.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfig:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfig": {
            "properties": {
                "tasks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfigTask:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfigTask"
                    },
                    "description": "Optional. The tasks that will run as a part of the verify job. The tasks are executed sequentially in the order specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfigTask:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfigTask": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfigTaskContainer:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfigTaskContainer",
                    "description": "Optional. This task is represented by a container that is executed in the Cloud Build execution environment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfigTaskContainer:DeliveryPipelineSerialPipelineStageStrategyCanaryCanaryDeploymentVerifyConfigTaskContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Required. Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeployment:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeployment": {
            "properties": {
                "phaseConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfig:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfig"
                    },
                    "description": "Required. Configuration for each phase in the canary deployment in the order executed.\n"
                }
            },
            "type": "object",
            "required": [
                "phaseConfigs"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfig:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfig": {
            "properties": {
                "analysis": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysis:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysis",
                    "description": "Optional. Configuration for the analysis job.\n"
                },
                "percentage": {
                    "type": "integer",
                    "description": "Required. Percentage deployment for the phase.\n"
                },
                "phaseId": {
                    "type": "string",
                    "description": "Required. The ID to assign to the `Rollout` phase. This value must consist of lower-case letters, numbers, and hyphens, start with a letter and end with a letter or a number, and have a max length of 63 characters. In other words, it must match the following regex: `^a-z?$`.\n"
                },
                "postdeploy": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigPostdeploy:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigPostdeploy",
                    "description": "Optional. Configuration for the postdeploy job of this phase. If this is not configured, postdeploy job will not be present for this phase.\n"
                },
                "predeploy": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigPredeploy:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigPredeploy",
                    "description": "Optional. Configuration for the predeploy job of this phase. If this is not configured, predeploy job will not be present for this phase.\n"
                },
                "profiles": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Skaffold profiles to use when rendering the manifest for this phase. These are in addition to the profiles list specified in the `DeliveryPipeline` stage.\n"
                },
                "verify": {
                    "type": "boolean",
                    "description": "Whether to run verify tests after the deployment.\n"
                },
                "verifyConfig": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfig:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfig",
                    "description": "Optional. Configuration for the verify job.\n"
                }
            },
            "type": "object",
            "required": [
                "percentage",
                "phaseId"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysis:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysis": {
            "properties": {
                "customChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheck:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheck"
                    },
                    "description": "Optional. Custom analysis checks from 3P metric providers.\n"
                },
                "duration": {
                    "type": "string",
                    "description": "Required. The amount of time in minutes the analysis on the target will last. If all analysis checks have successfully completed before the specified duration, the analysis is successful. If a check is still running while the specified duration passes, it will wait for that check to complete to determine if the analysis is successful. The maximum duration is 48 hours.\n"
                },
                "googleCloud": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisGoogleCloud:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisGoogleCloud",
                    "description": "Optional. Google Cloud - based analysis checks.\n"
                }
            },
            "type": "object",
            "required": [
                "duration"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheck:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheck": {
            "properties": {
                "frequency": {
                    "type": "string",
                    "description": "Optional. The frequency at which the custom check will be run, with a minimum and default of 5 minutes.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Required. The ID of the custom Analysis check.\n"
                },
                "task": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheckTask:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheckTask",
                    "description": "Required. The Task to be run for this custom check.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheckTask:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheckTask": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheckTaskContainer:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheckTaskContainer",
                    "description": "Optional. This task is represented by a container that is executed in the Cloud Build execution environment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheckTaskContainer:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisCustomCheckTaskContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Required. Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisGoogleCloud:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisGoogleCloud": {
            "properties": {
                "alertPolicyChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisGoogleCloudAlertPolicyCheck:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisGoogleCloudAlertPolicyCheck"
                    },
                    "description": "Optional. A list of Cloud Monitoring Alert Policy checks to perform as part of the analysis.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisGoogleCloudAlertPolicyCheck:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigAnalysisGoogleCloudAlertPolicyCheck": {
            "properties": {
                "alertPolicies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. The Cloud Monitoring Alert Policies to check for active alerts. Format is `projects/{project}/alertPolicies/{alert_policy}`.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Required. The ID of the analysis check.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. A set of labels to filter active alerts. If set, only alerts having all of the specified labels will be considered. Otherwise, all active alerts will be considered.\n"
                }
            },
            "type": "object",
            "required": [
                "alertPolicies",
                "id"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigPostdeploy:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigPostdeploy": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A sequence of skaffold custom actions to invoke during execution of the postdeploy job.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigPredeploy:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigPredeploy": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A sequence of skaffold custom actions to invoke during execution of the predeploy job.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfig:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfig": {
            "properties": {
                "tasks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfigTask:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfigTask"
                    },
                    "description": "Optional. The tasks that will run as a part of the verify job. The tasks are executed sequentially in the order specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfigTask:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfigTask": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfigTaskContainer:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfigTaskContainer",
                    "description": "Optional. This task is represented by a container that is executed in the Cloud Build execution environment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfigTaskContainer:DeliveryPipelineSerialPipelineStageStrategyCanaryCustomCanaryDeploymentPhaseConfigVerifyConfigTaskContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Required. Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfig:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfig": {
            "properties": {
                "cloudRun": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigCloudRun:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigCloudRun",
                    "description": "Cloud Run runtime configuration.\n"
                },
                "kubernetes": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetes:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetes",
                    "description": "Kubernetes runtime configuration.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigCloudRun:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigCloudRun": {
            "properties": {
                "automaticTrafficControl": {
                    "type": "boolean",
                    "description": "Whether Cloud Deploy should update the traffic stanza in a Cloud Run Service on the user's behalf to facilitate traffic splitting. This is required to be true for CanaryDeployments, but optional for CustomCanaryDeployments.\n"
                },
                "canaryRevisionTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A list of tags that are added to the canary revision while the canary phase is in progress.\n"
                },
                "priorRevisionTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A list of tags that are added to the prior revision while the canary phase is in progress.\n"
                },
                "stableRevisionTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A list of tags that are added to the final stable revision when the stable phase is applied.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetes:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetes": {
            "properties": {
                "gatewayServiceMesh": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesGatewayServiceMesh:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesGatewayServiceMesh",
                    "description": "Kubernetes Gateway API service mesh configuration.\n"
                },
                "serviceNetworking": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesServiceNetworking:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesServiceNetworking",
                    "description": "Kubernetes Service networking configuration.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesGatewayServiceMesh:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesGatewayServiceMesh": {
            "properties": {
                "deployment": {
                    "type": "string",
                    "description": "Required. Name of the Kubernetes Deployment whose traffic is managed by the specified HTTPRoute and Service.\n"
                },
                "httpRoute": {
                    "type": "string",
                    "description": "Required. Name of the Gateway API HTTPRoute.\n"
                },
                "podSelectorLabel": {
                    "type": "string",
                    "description": "Optional. The label to use when selecting Pods for the Deployment and Service resources. This label must already be present in both resources.\n"
                },
                "routeDestinations": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesGatewayServiceMeshRouteDestinations:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesGatewayServiceMeshRouteDestinations",
                    "description": "Optional. Route destinations allow configuring the Gateway API HTTPRoute to be deployed to additional clusters. This option is available for multi-cluster service mesh set ups that require the route to exist in the clusters that call the service. If unspecified, the HTTPRoute will only be deployed to the Target cluster.\n"
                },
                "routeUpdateWaitTime": {
                    "type": "string",
                    "description": "Optional. The time to wait for route updates to propagate. The maximum configurable time is 3 hours, in seconds format. If unspecified, there is no wait time.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Required. Name of the Kubernetes Service.\n"
                },
                "stableCutbackDuration": {
                    "type": "string",
                    "description": "Optional. The amount of time to migrate traffic back from the canary Service to the original Service during the stable phase deployment. If specified, must be between 15s and 3600s. If unspecified, there is no cutback time.\n"
                }
            },
            "type": "object",
            "required": [
                "deployment",
                "httpRoute",
                "service"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesGatewayServiceMeshRouteDestinations:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesGatewayServiceMeshRouteDestinations": {
            "properties": {
                "destinationIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. The clusters where the Gateway API HTTPRoute resource will be deployed to. Valid entries include the associated entities IDs configured in the Target resource and \"@self\" to include the Target cluster.\n"
                },
                "propagateService": {
                    "type": "boolean",
                    "description": "Optional. Whether to propagate the Kubernetes Service to the route destination clusters. The Service will always be deployed to the Target cluster even if the HTTPRoute is not. This option may be used to facilitiate successful DNS lookup in the route destination clusters. Can only be set to true if destinations are specified.\n"
                }
            },
            "type": "object",
            "required": [
                "destinationIds"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesServiceNetworking:DeliveryPipelineSerialPipelineStageStrategyCanaryRuntimeConfigKubernetesServiceNetworking": {
            "properties": {
                "deployment": {
                    "type": "string",
                    "description": "Required. Name of the Kubernetes Deployment whose traffic is managed by the specified Service.\n"
                },
                "disablePodOverprovisioning": {
                    "type": "boolean",
                    "description": "Optional. Whether to disable Pod overprovisioning. If Pod overprovisioning is disabled then Cloud Deploy will limit the number of total Pods used for the deployment strategy to the number of Pods the Deployment has on the cluster.\n"
                },
                "podSelectorLabel": {
                    "type": "string",
                    "description": "Optional. The label to use when selecting Pods for the Deployment resource. This label must already be present in the Deployment.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Required. Name of the Kubernetes Service.\n"
                }
            },
            "type": "object",
            "required": [
                "deployment",
                "service"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandard:DeliveryPipelineSerialPipelineStageStrategyStandard": {
            "properties": {
                "analysis": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysis:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysis",
                    "description": "Optional. Configuration for the analysis job.\n"
                },
                "postdeploy": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPostdeploy:DeliveryPipelineSerialPipelineStageStrategyStandardPostdeploy",
                    "description": "Optional. Configuration for the postdeploy job. If this is not configured, postdeploy job will not be present.\n"
                },
                "predeploy": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPredeploy:DeliveryPipelineSerialPipelineStageStrategyStandardPredeploy",
                    "description": "Optional. Configuration for the predeploy job. If this is not configured, predeploy job will not be present.\n"
                },
                "verify": {
                    "type": "boolean",
                    "description": "Whether to verify a deployment.\n"
                },
                "verifyConfig": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfig:DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfig",
                    "description": "Optional. Configuration for the verify job.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysis:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysis": {
            "properties": {
                "customChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheck:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheck"
                    },
                    "description": "Optional. Custom analysis checks from 3P metric providers.\n"
                },
                "duration": {
                    "type": "string",
                    "description": "Required. The amount of time in minutes the analysis on the target will last. If all analysis checks have successfully completed before the specified duration, the analysis is successful. If a check is still running while the specified duration passes, it will wait for that check to complete to determine if the analysis is successful. The maximum duration is 48 hours.\n"
                },
                "googleCloud": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisGoogleCloud:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisGoogleCloud",
                    "description": "Optional. Google Cloud - based analysis checks.\n"
                }
            },
            "type": "object",
            "required": [
                "duration"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheck:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheck": {
            "properties": {
                "frequency": {
                    "type": "string",
                    "description": "Optional. The frequency at which the custom check will be run, with a minimum and default of 5 minutes.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Required. The ID of the custom Analysis check.\n"
                },
                "task": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheckTask:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheckTask",
                    "description": "Required. The Task to be run for this custom check.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheckTask:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheckTask": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheckTaskContainer:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheckTaskContainer",
                    "description": "Optional. This task is represented by a container that is executed in the Cloud Build execution environment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheckTaskContainer:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisCustomCheckTaskContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Required. Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisGoogleCloud:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisGoogleCloud": {
            "properties": {
                "alertPolicyChecks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisGoogleCloudAlertPolicyCheck:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisGoogleCloudAlertPolicyCheck"
                    },
                    "description": "Optional. A list of Cloud Monitoring Alert Policy checks to perform as part of the analysis.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisGoogleCloudAlertPolicyCheck:DeliveryPipelineSerialPipelineStageStrategyStandardAnalysisGoogleCloudAlertPolicyCheck": {
            "properties": {
                "alertPolicies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. The Cloud Monitoring Alert Policies to check for active alerts. Format is `projects/{project}/alertPolicies/{alert_policy}`.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Required. The ID of the analysis check.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. A set of labels to filter active alerts. If set, only alerts having all of the specified labels will be considered. Otherwise, all active alerts will be considered.\n"
                }
            },
            "type": "object",
            "required": [
                "alertPolicies",
                "id"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPostdeploy:DeliveryPipelineSerialPipelineStageStrategyStandardPostdeploy": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A sequence of skaffold custom actions to invoke during execution of the postdeploy job.\n"
                },
                "tasks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPostdeployTask:DeliveryPipelineSerialPipelineStageStrategyStandardPostdeployTask"
                    },
                    "description": "Optional. The tasks that will run as a part of the postdeploy job. Only one of \u003cspan pulumi-lang-nodejs=\"`actions`\" pulumi-lang-dotnet=\"`Actions`\" pulumi-lang-go=\"`actions`\" pulumi-lang-python=\"`actions`\" pulumi-lang-yaml=\"`actions`\" pulumi-lang-java=\"`actions`\" pulumi-lang-hcl=\"`actions`\"\u003e`actions`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tasks`\" pulumi-lang-dotnet=\"`Tasks`\" pulumi-lang-go=\"`tasks`\" pulumi-lang-python=\"`tasks`\" pulumi-lang-yaml=\"`tasks`\" pulumi-lang-java=\"`tasks`\" pulumi-lang-hcl=\"`tasks`\"\u003e`tasks`\u003c/span\u003e can be specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPostdeployTask:DeliveryPipelineSerialPipelineStageStrategyStandardPostdeployTask": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPostdeployTaskContainer:DeliveryPipelineSerialPipelineStageStrategyStandardPostdeployTaskContainer",
                    "description": "Optional. This task is represented by a container that is executed in the Cloud Build execution environment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPostdeployTaskContainer:DeliveryPipelineSerialPipelineStageStrategyStandardPostdeployTaskContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Required. Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPredeploy:DeliveryPipelineSerialPipelineStageStrategyStandardPredeploy": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. A sequence of skaffold custom actions to invoke during execution of the predeploy job.\n"
                },
                "tasks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPredeployTask:DeliveryPipelineSerialPipelineStageStrategyStandardPredeployTask"
                    },
                    "description": "Optional. The tasks that will run as a part of the predeploy job. Only one of \u003cspan pulumi-lang-nodejs=\"`actions`\" pulumi-lang-dotnet=\"`Actions`\" pulumi-lang-go=\"`actions`\" pulumi-lang-python=\"`actions`\" pulumi-lang-yaml=\"`actions`\" pulumi-lang-java=\"`actions`\" pulumi-lang-hcl=\"`actions`\"\u003e`actions`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tasks`\" pulumi-lang-dotnet=\"`Tasks`\" pulumi-lang-go=\"`tasks`\" pulumi-lang-python=\"`tasks`\" pulumi-lang-yaml=\"`tasks`\" pulumi-lang-java=\"`tasks`\" pulumi-lang-hcl=\"`tasks`\"\u003e`tasks`\u003c/span\u003e can be specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPredeployTask:DeliveryPipelineSerialPipelineStageStrategyStandardPredeployTask": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPredeployTaskContainer:DeliveryPipelineSerialPipelineStageStrategyStandardPredeployTaskContainer",
                    "description": "Optional. This task is represented by a container that is executed in the Cloud Build execution environment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardPredeployTaskContainer:DeliveryPipelineSerialPipelineStageStrategyStandardPredeployTaskContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Required. Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfig:DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfig": {
            "properties": {
                "tasks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfigTask:DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfigTask"
                    },
                    "description": "Optional. The tasks that will run as a part of the verify job. The tasks are executed sequentially in the order specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfigTask:DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfigTask": {
            "properties": {
                "container": {
                    "$ref": "#/types/gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfigTaskContainer:DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfigTaskContainer",
                    "description": "Optional. This task is represented by a container that is executed in the Cloud Build execution environment.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfigTaskContainer:DeliveryPipelineSerialPipelineStageStrategyStandardVerifyConfigTaskContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Args is the container arguments to use. This overrides the default arguments defined in the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Optional. Command is the container entrypoint to use. This overrides the default entrypoint defined in the container image.\n"
                },
                "env": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Optional. Environment variables that are set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Required. Image is the container image to use.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ]
        },
        "gcp:clouddeploy/DeployPolicyRule:DeployPolicyRule": {
            "properties": {
                "rolloutRestriction": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestriction:DeployPolicyRuleRolloutRestriction",
                    "description": "Rollout restrictions.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestriction:DeployPolicyRuleRolloutRestriction": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Rollout actions to be restricted as part of the policy. If left empty, all actions will be restricted.\nEach value may be one of: `ADVANCE`, `APPROVE`, `CANCEL`, `CREATE`, `IGNORE_JOB`, `RETRY_JOB`, `ROLLBACK`, `TERMINATE_JOBRUN`.\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the rule. This id must be unique in the `DeployPolicy` resource to which this rule belongs. The format is `a-z{0,62}`.\n"
                },
                "invokers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "What invoked the action. If left empty, all invoker types will be restricted.\nEach value may be one of: `USER`, `DEPLOY_AUTOMATION`.\n"
                },
                "timeWindows": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindows:DeployPolicyRuleRolloutRestrictionTimeWindows",
                    "description": "Time window within which actions are restricted.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindows:DeployPolicyRuleRolloutRestrictionTimeWindows": {
            "properties": {
                "oneTimeWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindow:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindow"
                    },
                    "description": "One-time windows within which actions are restricted.\nStructure is documented below.\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "The time zone in IANA format IANA Time Zone Database (e.g. America/New_York).\n"
                },
                "weeklyWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindow:DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindow"
                    },
                    "description": "Recurring weekly windows within which actions are restricted.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "timeZone"
            ]
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindow:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindow": {
            "properties": {
                "endDate": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowEndDate:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowEndDate",
                    "description": "End date.\nStructure is documented below.\n"
                },
                "endTime": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowEndTime:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowEndTime",
                    "description": "End time (exclusive). You may use 24:00 for the end of the day.\nStructure is documented below.\n"
                },
                "startDate": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowStartDate:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowStartDate",
                    "description": "Start date.\nStructure is documented below.\n"
                },
                "startTime": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowStartTime:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowStartTime",
                    "description": "Start time (inclusive). Use 00:00 for the beginning of the day.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "endDate",
                "endTime",
                "startDate",
                "startTime"
            ]
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowEndDate:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowEndDate": {
            "properties": {
                "day": {
                    "type": "integer",
                    "description": "Day of a month. Must be from 1 to 31 and valid for the year and month.\n"
                },
                "month": {
                    "type": "integer",
                    "description": "Month of a year. Must be from 1 to 12.\n"
                },
                "year": {
                    "type": "integer",
                    "description": "Year of the date. Must be from 1 to 9999.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowEndTime:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowEndTime": {
            "properties": {
                "hours": {
                    "type": "integer",
                    "description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.\n"
                },
                "minutes": {
                    "type": "integer",
                    "description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowStartDate:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowStartDate": {
            "properties": {
                "day": {
                    "type": "integer",
                    "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.\n"
                },
                "month": {
                    "type": "integer",
                    "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.\n"
                },
                "year": {
                    "type": "integer",
                    "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowStartTime:DeployPolicyRuleRolloutRestrictionTimeWindowsOneTimeWindowStartTime": {
            "properties": {
                "hours": {
                    "type": "integer",
                    "description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.\n"
                },
                "minutes": {
                    "type": "integer",
                    "description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindow:DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindow": {
            "properties": {
                "daysOfWeeks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Days of week. If left empty, all days of the week will be included.\nEach value may be one of: `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`.\n"
                },
                "endTime": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindowEndTime:DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindowEndTime",
                    "description": "End time (exclusive). Use 24:00 to indicate midnight. If you specify endTime you must also specify startTime. If left empty, this will block for the entire day for the days specified in daysOfWeek.\nStructure is documented below.\n"
                },
                "startTime": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindowStartTime:DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindowStartTime",
                    "description": "Start time (inclusive). Use 00:00 for the beginning of the day. If you specify startTime you must also specify endTime. If left empty, this will block for the entire day for the days specified in daysOfWeek.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindowEndTime:DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindowEndTime": {
            "properties": {
                "hours": {
                    "type": "integer",
                    "description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.\n"
                },
                "minutes": {
                    "type": "integer",
                    "description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindowStartTime:DeployPolicyRuleRolloutRestrictionTimeWindowsWeeklyWindowStartTime": {
            "properties": {
                "hours": {
                    "type": "integer",
                    "description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.\n"
                },
                "minutes": {
                    "type": "integer",
                    "description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.\n"
                },
                "nanos": {
                    "type": "integer",
                    "description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicySelector:DeployPolicySelector": {
            "properties": {
                "deliveryPipeline": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicySelectorDeliveryPipeline:DeployPolicySelectorDeliveryPipeline",
                    "description": "Contains attributes about a delivery pipeline.\nStructure is documented below.\n"
                },
                "target": {
                    "$ref": "#/types/gcp:clouddeploy/DeployPolicySelectorTarget:DeployPolicySelectorTarget",
                    "description": "Contains attributes about a target.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/DeployPolicySelectorDeliveryPipeline:DeployPolicySelectorDeliveryPipeline": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the DeliveryPipeline. The value of this field could be one of the following:\n- The last segment of a pipeline name\n- \"*\", all delivery pipelines in a location\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "DeliveryPipeline labels.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "labels"
                    ]
                }
            }
        },
        "gcp:clouddeploy/DeployPolicySelectorTarget:DeployPolicySelectorTarget": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "ID of the `Target`. The value of this field could be one of the following: * The last segment of a target name. It only needs the ID to determine which target is being referred to * \"*\", all targets in a location.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Target labels.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "labels"
                    ]
                }
            }
        },
        "gcp:clouddeploy/TargetAnthosCluster:TargetAnthosCluster": {
            "properties": {
                "membership": {
                    "type": "string",
                    "description": "Membership of the GKE Hub-registered cluster to which to apply the Skaffold configuration. Format is `projects/{project}/locations/{location}/memberships/{membership_name}`.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/TargetAssociatedEntity:TargetAssociatedEntity": {
            "properties": {
                "anthosClusters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/TargetAssociatedEntityAnthosCluster:TargetAssociatedEntityAnthosCluster"
                    },
                    "description": "Optional. Information specifying Anthos clusters as associated entities.\n"
                },
                "entityId": {
                    "type": "string",
                    "description": "The name for the key in the map for which this object is mapped to in the API\n"
                },
                "gkeClusters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddeploy/TargetAssociatedEntityGkeCluster:TargetAssociatedEntityGkeCluster"
                    },
                    "description": "Optional. Information specifying GKE clusters as associated entities.\n"
                }
            },
            "type": "object",
            "required": [
                "entityId"
            ]
        },
        "gcp:clouddeploy/TargetAssociatedEntityAnthosCluster:TargetAssociatedEntityAnthosCluster": {
            "properties": {
                "membership": {
                    "type": "string",
                    "description": "Optional. Membership of the GKE Hub-registered cluster to which to apply the Skaffold configuration. Format is `projects/{project}/locations/{location}/memberships/{membership_name}`.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/TargetAssociatedEntityGkeCluster:TargetAssociatedEntityGkeCluster": {
            "properties": {
                "cluster": {
                    "type": "string",
                    "description": "Optional. Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}`.\n"
                },
                "internalIp": {
                    "type": "boolean",
                    "description": "Optional. If true, \u003cspan pulumi-lang-nodejs=\"`cluster`\" pulumi-lang-dotnet=\"`Cluster`\" pulumi-lang-go=\"`cluster`\" pulumi-lang-python=\"`cluster`\" pulumi-lang-yaml=\"`cluster`\" pulumi-lang-java=\"`cluster`\" pulumi-lang-hcl=\"`cluster`\"\u003e`cluster`\u003c/span\u003e is accessed using the private IP address of the control plane endpoint. Otherwise, the default IP address of the control plane endpoint is used. The default IP address is the private IP address for clusters with private control-plane endpoints and the public IP address otherwise. Only specify this option when \u003cspan pulumi-lang-nodejs=\"`cluster`\" pulumi-lang-dotnet=\"`Cluster`\" pulumi-lang-go=\"`cluster`\" pulumi-lang-python=\"`cluster`\" pulumi-lang-yaml=\"`cluster`\" pulumi-lang-java=\"`cluster`\" pulumi-lang-hcl=\"`cluster`\"\u003e`cluster`\u003c/span\u003e is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept).\n"
                },
                "proxyUrl": {
                    "type": "string",
                    "description": "Optional. If set, used to configure a [proxy](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/#proxy) to the Kubernetes server.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/TargetCustomTarget:TargetCustomTarget": {
            "properties": {
                "customTargetType": {
                    "type": "string",
                    "description": "Required. The name of the CustomTargetType. Format must be `projects/{project}/locations/{location}/customTargetTypes/{custom_target_type}`.\n"
                }
            },
            "type": "object",
            "required": [
                "customTargetType"
            ]
        },
        "gcp:clouddeploy/TargetExecutionConfig:TargetExecutionConfig": {
            "properties": {
                "artifactStorage": {
                    "type": "string",
                    "description": "Optional. Cloud Storage location in which to store execution outputs. This can either be a bucket (\"gs://my-bucket\") or a path within a bucket (\"gs://my-bucket/my-dir\"). If unspecified, a default bucket located in the same region will be used.\n"
                },
                "defaultPool": {
                    "$ref": "#/types/gcp:clouddeploy/TargetExecutionConfigDefaultPool:TargetExecutionConfigDefaultPool",
                    "description": "Optional. Use default Cloud Build pool.\n"
                },
                "executionTimeout": {
                    "type": "string",
                    "description": "Optional. Execution timeout for a Cloud Build Execution. This must be between 10m and 24h in seconds format. If unspecified, a default timeout of 1h is used.\n"
                },
                "privatePool": {
                    "$ref": "#/types/gcp:clouddeploy/TargetExecutionConfigPrivatePool:TargetExecutionConfigPrivatePool",
                    "description": "Optional. Use private Cloud Build pool.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) is used.\n"
                },
                "usages": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. Usages when this configuration should be applied.\n"
                },
                "verbose": {
                    "type": "boolean",
                    "description": "Optional. If true, additional logging will be enabled when running builds in this execution environment.\n"
                },
                "workerPool": {
                    "type": "string",
                    "description": "Optional. The resource name of the `WorkerPool`, with the format `projects/{project}/locations/{location}/workerPools/{worker_pool}`. If this optional field is unspecified, the default Cloud Build pool will be used.\n"
                }
            },
            "type": "object",
            "required": [
                "usages"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "artifactStorage",
                        "defaultPool",
                        "executionTimeout",
                        "privatePool",
                        "serviceAccount",
                        "usages"
                    ]
                }
            }
        },
        "gcp:clouddeploy/TargetExecutionConfigDefaultPool:TargetExecutionConfigDefaultPool": {
            "properties": {
                "artifactStorage": {
                    "type": "string",
                    "description": "Optional. Cloud Storage location where execution outputs should be stored. This can either be a bucket (\"gs://my-bucket\") or a path within a bucket (\"gs://my-bucket/my-dir\"). If unspecified, a default bucket located in the same region will be used.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) will be used.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "artifactStorage",
                        "serviceAccount"
                    ]
                }
            }
        },
        "gcp:clouddeploy/TargetExecutionConfigPrivatePool:TargetExecutionConfigPrivatePool": {
            "properties": {
                "artifactStorage": {
                    "type": "string",
                    "description": "Optional. Cloud Storage location where execution outputs should be stored. This can either be a bucket (\"gs://my-bucket\") or a path within a bucket (\"gs://my-bucket/my-dir\"). If unspecified, a default bucket located in the same region will be used.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Optional. Google service account to use for execution. If unspecified, the project execution service account (-compute@developer.gserviceaccount.com) will be used.\n"
                },
                "workerPool": {
                    "type": "string",
                    "description": "Required. Resource name of the Cloud Build worker pool to use. The format is `projects/{project}/locations/{location}/workerPools/{pool}`.\n"
                }
            },
            "type": "object",
            "required": [
                "workerPool"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "artifactStorage",
                        "serviceAccount",
                        "workerPool"
                    ]
                }
            }
        },
        "gcp:clouddeploy/TargetGke:TargetGke": {
            "properties": {
                "cluster": {
                    "type": "string",
                    "description": "Information specifying a GKE Cluster. Format is `projects/{project_id}/locations/{location_id}/clusters/{cluster_id}.\n"
                },
                "dnsEndpoint": {
                    "type": "boolean",
                    "description": "Optional. If set, the cluster will be accessed using the DNS endpoint. Note that both \u003cspan pulumi-lang-nodejs=\"`dnsEndpoint`\" pulumi-lang-dotnet=\"`DnsEndpoint`\" pulumi-lang-go=\"`dnsEndpoint`\" pulumi-lang-python=\"`dns_endpoint`\" pulumi-lang-yaml=\"`dnsEndpoint`\" pulumi-lang-java=\"`dnsEndpoint`\" pulumi-lang-hcl=\"`dns_endpoint`\"\u003e`dnsEndpoint`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`internalIp`\" pulumi-lang-dotnet=\"`InternalIp`\" pulumi-lang-go=\"`internalIp`\" pulumi-lang-python=\"`internal_ip`\" pulumi-lang-yaml=\"`internalIp`\" pulumi-lang-java=\"`internalIp`\" pulumi-lang-hcl=\"`internal_ip`\"\u003e`internalIp`\u003c/span\u003e cannot be set to true.\n"
                },
                "internalIp": {
                    "type": "boolean",
                    "description": "Optional. If true, \u003cspan pulumi-lang-nodejs=\"`cluster`\" pulumi-lang-dotnet=\"`Cluster`\" pulumi-lang-go=\"`cluster`\" pulumi-lang-python=\"`cluster`\" pulumi-lang-yaml=\"`cluster`\" pulumi-lang-java=\"`cluster`\" pulumi-lang-hcl=\"`cluster`\"\u003e`cluster`\u003c/span\u003e is accessed using the private IP address of the control plane endpoint. Otherwise, the default IP address of the control plane endpoint is used. The default IP address is the private IP address for clusters with private control-plane endpoints and the public IP address otherwise. Only specify this option when \u003cspan pulumi-lang-nodejs=\"`cluster`\" pulumi-lang-dotnet=\"`Cluster`\" pulumi-lang-go=\"`cluster`\" pulumi-lang-python=\"`cluster`\" pulumi-lang-yaml=\"`cluster`\" pulumi-lang-java=\"`cluster`\" pulumi-lang-hcl=\"`cluster`\"\u003e`cluster`\u003c/span\u003e is a [private GKE cluster](https://cloud.google.com/kubernetes-engine/docs/concepts/private-cluster-concept).\n"
                },
                "proxyUrl": {
                    "type": "string",
                    "description": "Optional. If set, used to configure a [proxy](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/#proxy) to the Kubernetes server.\n"
                }
            },
            "type": "object"
        },
        "gcp:clouddeploy/TargetIamBindingCondition:TargetIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:clouddeploy/TargetIamMemberCondition:TargetIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:clouddeploy/TargetMultiTarget:TargetMultiTarget": {
            "properties": {
                "targetIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. The\u003cspan pulumi-lang-nodejs=\" targetIds \" pulumi-lang-dotnet=\" TargetIds \" pulumi-lang-go=\" targetIds \" pulumi-lang-python=\" target_ids \" pulumi-lang-yaml=\" targetIds \" pulumi-lang-java=\" targetIds \" pulumi-lang-hcl=\" target_ids \"\u003e targetIds \u003c/span\u003eof this multiTarget.\n"
                }
            },
            "type": "object",
            "required": [
                "targetIds"
            ]
        },
        "gcp:clouddeploy/TargetRun:TargetRun": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "Required. The location where the Cloud Run Service should be located. Format is `projects/{project}/locations/{location}`.\n"
                }
            },
            "type": "object",
            "required": [
                "location"
            ]
        },
        "gcp:clouddomains/RegistrationContactSettings:RegistrationContactSettings": {
            "properties": {
                "adminContact": {
                    "$ref": "#/types/gcp:clouddomains/RegistrationContactSettingsAdminContact:RegistrationContactSettingsAdminContact",
                    "description": "Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.\nWarning: For new Registrations, the registrant receives an email confirmation that they must complete within 15 days to\navoid domain suspension.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "privacy": {
                    "type": "string",
                    "description": "Required. Privacy setting for the contacts associated with the Registration.\nValues are PUBLIC_CONTACT_DATA, PRIVATE_CONTACT_DATA, and REDACTED_CONTACT_DATA\n",
                    "willReplaceOnChanges": true
                },
                "registrantContact": {
                    "$ref": "#/types/gcp:clouddomains/RegistrationContactSettingsRegistrantContact:RegistrationContactSettingsRegistrantContact",
                    "description": "Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.\nWarning: For new Registrations, the registrant receives an email confirmation that they must complete within 15 days to\navoid domain suspension.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "technicalContact": {
                    "$ref": "#/types/gcp:clouddomains/RegistrationContactSettingsTechnicalContact:RegistrationContactSettingsTechnicalContact",
                    "description": "Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.\nWarning: For new Registrations, the registrant receives an email confirmation that they must complete within 15 days to\navoid domain suspension.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "adminContact",
                "privacy",
                "registrantContact",
                "technicalContact"
            ]
        },
        "gcp:clouddomains/RegistrationContactSettingsAdminContact:RegistrationContactSettingsAdminContact": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contact.\n",
                    "willReplaceOnChanges": true
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number of the contact in international format. For example, \"+1-800-555-0123\".\n",
                    "willReplaceOnChanges": true
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Required. Phone number of the contact in international format. For example, \"+1-800-555-0123\".\n",
                    "willReplaceOnChanges": true
                },
                "postalAddress": {
                    "$ref": "#/types/gcp:clouddomains/RegistrationContactSettingsAdminContactPostalAddress:RegistrationContactSettingsAdminContactPostalAddress",
                    "description": "Required. Postal address of the contact.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "email",
                "phoneNumber",
                "postalAddress"
            ]
        },
        "gcp:clouddomains/RegistrationContactSettingsAdminContactPostalAddress:RegistrationContactSettingsAdminContactPostalAddress": {
            "properties": {
                "addressLines": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Unstructured address lines describing the lower levels of an address.\nBecause values in addressLines do not have type information and may sometimes contain multiple values in a single\nfield (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be\n\"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan),\u003cspan pulumi-lang-nodejs=\" addressLanguage\n\" pulumi-lang-dotnet=\" AddressLanguage\n\" pulumi-lang-go=\" addressLanguage\n\" pulumi-lang-python=\" address_language\n\" pulumi-lang-yaml=\" addressLanguage\n\" pulumi-lang-java=\" addressLanguage\n\" pulumi-lang-hcl=\" address_language\n\"\u003e addressLanguage\n\u003c/span\u003eis used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way,\nthe most specific line of an address can be selected based on the language.\n",
                    "willReplaceOnChanges": true
                },
                "administrativeArea": {
                    "type": "string",
                    "description": "Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state,\na province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community\n(e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland\nthis should be left unpopulated.\n",
                    "willReplaceOnChanges": true
                },
                "locality": {
                    "type": "string",
                    "description": "Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world\nwhere localities are not well defined or do not fit into this structure well, leave locality empty and use addressLines.\n",
                    "willReplaceOnChanges": true
                },
                "organization": {
                    "type": "string",
                    "description": "The name of the organization at the address.\n",
                    "willReplaceOnChanges": true
                },
                "postalCode": {
                    "type": "string",
                    "description": "Postal code of the address. Not all countries use or require postal codes to be present, but where they are used,\nthey may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).\n",
                    "willReplaceOnChanges": true
                },
                "recipients": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The recipient at the address. This field may, under certain circumstances, contain multiline information. For example,\nit might contain \"care of\" information.\n",
                    "willReplaceOnChanges": true
                },
                "regionCode": {
                    "type": "string",
                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to\nensure the value is correct. See https://cldr.unicode.org/ and\nhttps://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "regionCode"
            ]
        },
        "gcp:clouddomains/RegistrationContactSettingsRegistrantContact:RegistrationContactSettingsRegistrantContact": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contact.\n",
                    "willReplaceOnChanges": true
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number of the contact in international format. For example, \"+1-800-555-0123\".\n",
                    "willReplaceOnChanges": true
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Required. Phone number of the contact in international format. For example, \"+1-800-555-0123\".\n",
                    "willReplaceOnChanges": true
                },
                "postalAddress": {
                    "$ref": "#/types/gcp:clouddomains/RegistrationContactSettingsRegistrantContactPostalAddress:RegistrationContactSettingsRegistrantContactPostalAddress",
                    "description": "Required. Postal address of the contact.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "email",
                "phoneNumber",
                "postalAddress"
            ]
        },
        "gcp:clouddomains/RegistrationContactSettingsRegistrantContactPostalAddress:RegistrationContactSettingsRegistrantContactPostalAddress": {
            "properties": {
                "addressLines": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Unstructured address lines describing the lower levels of an address.\nBecause values in addressLines do not have type information and may sometimes contain multiple values in a single\nfield (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be\n\"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan),\u003cspan pulumi-lang-nodejs=\" addressLanguage\n\" pulumi-lang-dotnet=\" AddressLanguage\n\" pulumi-lang-go=\" addressLanguage\n\" pulumi-lang-python=\" address_language\n\" pulumi-lang-yaml=\" addressLanguage\n\" pulumi-lang-java=\" addressLanguage\n\" pulumi-lang-hcl=\" address_language\n\"\u003e addressLanguage\n\u003c/span\u003eis used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way,\nthe most specific line of an address can be selected based on the language.\n",
                    "willReplaceOnChanges": true
                },
                "administrativeArea": {
                    "type": "string",
                    "description": "Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state,\na province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community\n(e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland\nthis should be left unpopulated.\n",
                    "willReplaceOnChanges": true
                },
                "locality": {
                    "type": "string",
                    "description": "Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world\nwhere localities are not well defined or do not fit into this structure well, leave locality empty and use addressLines.\n",
                    "willReplaceOnChanges": true
                },
                "organization": {
                    "type": "string",
                    "description": "The name of the organization at the address.\n",
                    "willReplaceOnChanges": true
                },
                "postalCode": {
                    "type": "string",
                    "description": "Postal code of the address. Not all countries use or require postal codes to be present, but where they are used,\nthey may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).\n",
                    "willReplaceOnChanges": true
                },
                "recipients": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The recipient at the address. This field may, under certain circumstances, contain multiline information. For example,\nit might contain \"care of\" information.\n",
                    "willReplaceOnChanges": true
                },
                "regionCode": {
                    "type": "string",
                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to\nensure the value is correct. See https://cldr.unicode.org/ and\nhttps://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "regionCode"
            ]
        },
        "gcp:clouddomains/RegistrationContactSettingsTechnicalContact:RegistrationContactSettingsTechnicalContact": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "Required. Email address of the contact.\n",
                    "willReplaceOnChanges": true
                },
                "faxNumber": {
                    "type": "string",
                    "description": "Fax number of the contact in international format. For example, \"+1-800-555-0123\".\n",
                    "willReplaceOnChanges": true
                },
                "phoneNumber": {
                    "type": "string",
                    "description": "Required. Phone number of the contact in international format. For example, \"+1-800-555-0123\".\n",
                    "willReplaceOnChanges": true
                },
                "postalAddress": {
                    "$ref": "#/types/gcp:clouddomains/RegistrationContactSettingsTechnicalContactPostalAddress:RegistrationContactSettingsTechnicalContactPostalAddress",
                    "description": "Required. Postal address of the contact.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "email",
                "phoneNumber",
                "postalAddress"
            ]
        },
        "gcp:clouddomains/RegistrationContactSettingsTechnicalContactPostalAddress:RegistrationContactSettingsTechnicalContactPostalAddress": {
            "properties": {
                "addressLines": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Unstructured address lines describing the lower levels of an address.\nBecause values in addressLines do not have type information and may sometimes contain multiple values in a single\nfield (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be\n\"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan),\u003cspan pulumi-lang-nodejs=\" addressLanguage\n\" pulumi-lang-dotnet=\" AddressLanguage\n\" pulumi-lang-go=\" addressLanguage\n\" pulumi-lang-python=\" address_language\n\" pulumi-lang-yaml=\" addressLanguage\n\" pulumi-lang-java=\" addressLanguage\n\" pulumi-lang-hcl=\" address_language\n\"\u003e addressLanguage\n\u003c/span\u003eis used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way,\nthe most specific line of an address can be selected based on the language.\n",
                    "willReplaceOnChanges": true
                },
                "administrativeArea": {
                    "type": "string",
                    "description": "Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state,\na province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community\n(e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland\nthis should be left unpopulated.\n",
                    "willReplaceOnChanges": true
                },
                "locality": {
                    "type": "string",
                    "description": "Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world\nwhere localities are not well defined or do not fit into this structure well, leave locality empty and use addressLines.\n",
                    "willReplaceOnChanges": true
                },
                "organization": {
                    "type": "string",
                    "description": "The name of the organization at the address.\n",
                    "willReplaceOnChanges": true
                },
                "postalCode": {
                    "type": "string",
                    "description": "Postal code of the address. Not all countries use or require postal codes to be present, but where they are used,\nthey may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).\n",
                    "willReplaceOnChanges": true
                },
                "recipients": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The recipient at the address. This field may, under certain circumstances, contain multiline information. For example,\nit might contain \"care of\" information.\n",
                    "willReplaceOnChanges": true
                },
                "regionCode": {
                    "type": "string",
                    "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to\nensure the value is correct. See https://cldr.unicode.org/ and\nhttps://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "regionCode"
            ]
        },
        "gcp:clouddomains/RegistrationDnsSettings:RegistrationDnsSettings": {
            "properties": {
                "customDns": {
                    "$ref": "#/types/gcp:clouddomains/RegistrationDnsSettingsCustomDns:RegistrationDnsSettingsCustomDns",
                    "description": "Configuration for an arbitrary DNS provider.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "glueRecords": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddomains/RegistrationDnsSettingsGlueRecord:RegistrationDnsSettingsGlueRecord"
                    },
                    "description": "The list of glue records for this Registration. Commonly empty.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:clouddomains/RegistrationDnsSettingsCustomDns:RegistrationDnsSettingsCustomDns": {
            "properties": {
                "dsRecords": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:clouddomains/RegistrationDnsSettingsCustomDnsDsRecord:RegistrationDnsSettingsCustomDnsDsRecord"
                    },
                    "description": "The list of DS records for this domain, which are used to enable DNSSEC. The domain's DNS provider can provide\nthe values to set here. If this field is empty, DNSSEC is disabled.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "nameServers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Required. A list of name servers that store the DNS zone for this domain. Each name server is a domain\nname, with Unicode domain names expressed in Punycode format.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "nameServers"
            ]
        },
        "gcp:clouddomains/RegistrationDnsSettingsCustomDnsDsRecord:RegistrationDnsSettingsCustomDnsDsRecord": {
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "The algorithm used to generate the referenced DNSKEY.\n",
                    "willReplaceOnChanges": true
                },
                "digest": {
                    "type": "string",
                    "description": "The digest generated from the referenced DNSKEY.\n",
                    "willReplaceOnChanges": true
                },
                "digestType": {
                    "type": "string",
                    "description": "The hash function used to generate the digest of the referenced DNSKEY.\n",
                    "willReplaceOnChanges": true
                },
                "keyTag": {
                    "type": "integer",
                    "description": "The key tag of the record. Must be set in range 0 -- 65535.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:clouddomains/RegistrationDnsSettingsGlueRecord:RegistrationDnsSettingsGlueRecord": {
            "properties": {
                "hostName": {
                    "type": "string",
                    "description": "Required. Domain name of the host in Punycode format.\n",
                    "willReplaceOnChanges": true
                },
                "ipv4Addresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses corresponding to this host in the standard decimal format (e.g. 198.51.100.1).\nAt least one of\u003cspan pulumi-lang-nodejs=\" ipv4Address \" pulumi-lang-dotnet=\" Ipv4Address \" pulumi-lang-go=\" ipv4Address \" pulumi-lang-python=\" ipv4_address \" pulumi-lang-yaml=\" ipv4Address \" pulumi-lang-java=\" ipv4Address \" pulumi-lang-hcl=\" ipv4_address \"\u003e ipv4Address \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" ipv6Address \" pulumi-lang-dotnet=\" Ipv6Address \" pulumi-lang-go=\" ipv6Address \" pulumi-lang-python=\" ipv6_address \" pulumi-lang-yaml=\" ipv6Address \" pulumi-lang-java=\" ipv6Address \" pulumi-lang-hcl=\" ipv6_address \"\u003e ipv6Address \u003c/span\u003emust be set.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6Addresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of IPv4 addresses corresponding to this host in the standard decimal format (e.g. 198.51.100.1).\nAt least one of\u003cspan pulumi-lang-nodejs=\" ipv4Address \" pulumi-lang-dotnet=\" Ipv4Address \" pulumi-lang-go=\" ipv4Address \" pulumi-lang-python=\" ipv4_address \" pulumi-lang-yaml=\" ipv4Address \" pulumi-lang-java=\" ipv4Address \" pulumi-lang-hcl=\" ipv4_address \"\u003e ipv4Address \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" ipv6Address \" pulumi-lang-dotnet=\" Ipv6Address \" pulumi-lang-go=\" ipv6Address \" pulumi-lang-python=\" ipv6_address \" pulumi-lang-yaml=\" ipv6Address \" pulumi-lang-java=\" ipv6Address \" pulumi-lang-hcl=\" ipv6_address \"\u003e ipv6Address \u003c/span\u003emust be set.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "hostName"
            ]
        },
        "gcp:clouddomains/RegistrationManagementSettings:RegistrationManagementSettings": {
            "properties": {
                "preferredRenewalMethod": {
                    "type": "string",
                    "description": "The desired renewal method for this Registration. The actual renewalMethod is automatically updated to reflect this choice.\nIf unset or equal to RENEWAL_METHOD_UNSPECIFIED, the actual renewalMethod is treated as if it were set to AUTOMATIC_RENEWAL.\nYou cannot use RENEWAL_DISABLED during resource creation, and you can update the renewal status only when the Registration\nresource has state ACTIVE or SUSPENDED.\nWhen preferredRenewalMethod is set to AUTOMATIC_RENEWAL, the actual renewalMethod can be set to RENEWAL_DISABLED in case of\nproblems with the billing account or reported domain abuse. In such cases, check the issues field on the Registration. After\nthe problem is resolved, the renewalMethod is automatically updated to preferredRenewalMethod in a few hours.\n",
                    "willReplaceOnChanges": true
                },
                "renewalMethod": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The actual renewal method for this Registration. When preferredRenewalMethod is set to AUTOMATIC_RENEWAL,\nthe actual renewalMethod can be equal to RENEWAL_DISABLED—for example, when there are problems with the billing account\nor reported domain abuse. In such cases, check the issues field on the Registration. After the problem is resolved, the\nrenewalMethod is automatically updated to preferredRenewalMethod in a few hours.\n"
                },
                "transferLockState": {
                    "type": "string",
                    "description": "Controls whether the domain can be transferred to another registrar. Values are UNLOCKED or LOCKED.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "preferredRenewalMethod",
                        "renewalMethod",
                        "transferLockState"
                    ]
                }
            }
        },
        "gcp:clouddomains/RegistrationYearlyPrice:RegistrationYearlyPrice": {
            "properties": {
                "currencyCode": {
                    "type": "string",
                    "description": "The three-letter currency code defined in ISO 4217.\n",
                    "willReplaceOnChanges": true
                },
                "units": {
                    "type": "string",
                    "description": "The whole units of the amount. For example if currencyCode is \"USD\", then 1 unit is one US dollar.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:cloudfunctions/FunctionAutomaticUpdatePolicy:FunctionAutomaticUpdatePolicy": {
            "type": "object"
        },
        "gcp:cloudfunctions/FunctionEventTrigger:FunctionEventTrigger": {
            "properties": {
                "eventType": {
                    "type": "string",
                    "description": "The type of event to observe. For example: `\"google.storage.object.finalize\"`.\nSee the documentation on [calling Cloud Functions](https://cloud.google.com/functions/docs/calling/) for a\nfull reference of accepted triggers.\n",
                    "willReplaceOnChanges": true
                },
                "failurePolicy": {
                    "$ref": "#/types/gcp:cloudfunctions/FunctionEventTriggerFailurePolicy:FunctionEventTriggerFailurePolicy",
                    "description": "Specifies policy for failed executions. Structure is documented below.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "Required. The name or partial URI of the resource from\nwhich to observe events. For example, `\"myBucket\"` or `\"projects/my-project/topics/my-topic\"`\n"
                }
            },
            "type": "object",
            "required": [
                "eventType",
                "resource"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "eventType",
                        "failurePolicy",
                        "resource"
                    ]
                }
            }
        },
        "gcp:cloudfunctions/FunctionEventTriggerFailurePolicy:FunctionEventTriggerFailurePolicy": {
            "properties": {
                "retry": {
                    "type": "boolean",
                    "description": "Whether the function should be retried on failure. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "retry"
            ]
        },
        "gcp:cloudfunctions/FunctionIamBindingCondition:FunctionIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudfunctions/FunctionIamMemberCondition:FunctionIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudfunctions/FunctionOnDeployUpdatePolicy:FunctionOnDeployUpdatePolicy": {
            "properties": {
                "runtimeVersion": {
                    "type": "string",
                    "description": "The runtime version which was used during latest function deployment.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "runtimeVersion"
                    ]
                }
            }
        },
        "gcp:cloudfunctions/FunctionSecretEnvironmentVariable:FunctionSecretEnvironmentVariable": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Name of the environment variable.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project identifier (due to a known limitation, only project number is supported by this field) of the project that contains the secret. If not set, it will be populated with the function's project, assuming that the secret exists in the same project as of the function.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "ID of the secret in secret manager (not the full resource name).\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the secret (version number or the string \"latest\"). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new clones start.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "secret",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "key",
                        "projectId",
                        "secret",
                        "version"
                    ]
                }
            }
        },
        "gcp:cloudfunctions/FunctionSecretVolume:FunctionSecretVolume": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "The path within the container to mount the secret volume. For example, setting the\u003cspan pulumi-lang-nodejs=\" mountPath \" pulumi-lang-dotnet=\" MountPath \" pulumi-lang-go=\" mountPath \" pulumi-lang-python=\" mount_path \" pulumi-lang-yaml=\" mountPath \" pulumi-lang-java=\" mountPath \" pulumi-lang-hcl=\" mount_path \"\u003e mountPath \u003c/span\u003eas \"/etc/secrets\" would mount the secret value files under the \"/etc/secrets\" directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount paths: \"/etc/secrets\" Restricted mount paths: \"/cloudsql\", \"/dev/log\", \"/pod\", \"/proc\", \"/var/log\".\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project identifier (due to a known limitation, only project number is supported by this field) of the project that contains the secret. If not set, it will be populated with the function's project, assuming that the secret exists in the same project as of the function.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "ID of the secret in secret manager (not the full resource name).\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctions/FunctionSecretVolumeVersion:FunctionSecretVolumeVersion"
                    },
                    "description": "List of secret versions to mount for this secret. If empty, the \"latest\" version of the secret will be made available in a file named after the secret under the mount point. Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "secret"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "mountPath",
                        "projectId",
                        "secret"
                    ]
                }
            }
        },
        "gcp:cloudfunctions/FunctionSecretVolumeVersion:FunctionSecretVolumeVersion": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Relative path of the file under the mount path where the secret value for this version will be fetched and made available. For example, setting the\u003cspan pulumi-lang-nodejs=\" mountPath \" pulumi-lang-dotnet=\" MountPath \" pulumi-lang-go=\" mountPath \" pulumi-lang-python=\" mount_path \" pulumi-lang-yaml=\" mountPath \" pulumi-lang-java=\" mountPath \" pulumi-lang-hcl=\" mount_path \"\u003e mountPath \u003c/span\u003eas \"/etc/secrets\" and path as \"/secret_foo\" would mount the secret value file at \"/etc/secrets/secret_foo\".\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the secret (version number or the string \"latest\"). It is preferable to use \"latest\" version with secret volumes as secret value changes are reflected immediately.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "version"
            ]
        },
        "gcp:cloudfunctions/FunctionSourceRepository:FunctionSourceRepository": {
            "properties": {
                "deployedUrl": {
                    "type": "string",
                    "description": "The URL pointing to the hosted repository where the function was defined at the time of deployment.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The URL pointing to the hosted repository where the function is defined. There are supported Cloud Source Repository URLs in the following formats:\n\n* To refer to a specific commit: `https://source.developers.google.com/projects/*/repos/*/revisions/*/paths/*`\n* To refer to a moveable alias (branch): `https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*`. To refer to HEAD, use the \u003cspan pulumi-lang-nodejs=\"`master`\" pulumi-lang-dotnet=\"`Master`\" pulumi-lang-go=\"`master`\" pulumi-lang-python=\"`master`\" pulumi-lang-yaml=\"`master`\" pulumi-lang-java=\"`master`\" pulumi-lang-hcl=\"`master`\"\u003e`master`\u003c/span\u003e moveable alias.\n* To refer to a specific fixed alias (tag): `https://source.developers.google.com/projects/*/repos/*/fixed-aliases/*/paths/*`\n"
                }
            },
            "type": "object",
            "required": [
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deployedUrl",
                        "url"
                    ]
                }
            }
        },
        "gcp:cloudfunctions/getFunctionAutomaticUpdatePolicy:getFunctionAutomaticUpdatePolicy": {
            "type": "object"
        },
        "gcp:cloudfunctions/getFunctionEventTrigger:getFunctionEventTrigger": {
            "properties": {
                "eventType": {
                    "type": "string",
                    "description": "The type of event to observe. For example: `\"google.storage.object.finalize\"`.\nSee the documentation on [calling Cloud Functions](https://cloud.google.com/functions/docs/calling/)\nfor a full reference of accepted triggers.\n"
                },
                "failurePolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctions/getFunctionEventTriggerFailurePolicy:getFunctionEventTriggerFailurePolicy"
                    },
                    "description": "Policy for failed executions. Structure is documented below.\n"
                },
                "resource": {
                    "type": "string",
                    "description": "The name of the resource whose events are being observed, for example, `\"myBucket\"`\n"
                }
            },
            "type": "object",
            "required": [
                "eventType",
                "failurePolicies",
                "resource"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctions/getFunctionEventTriggerFailurePolicy:getFunctionEventTriggerFailurePolicy": {
            "properties": {
                "retry": {
                    "type": "boolean",
                    "description": "Whether the function should be retried on failure.\n"
                }
            },
            "type": "object",
            "required": [
                "retry"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctions/getFunctionOnDeployUpdatePolicy:getFunctionOnDeployUpdatePolicy": {
            "properties": {
                "runtimeVersion": {
                    "type": "string",
                    "description": "The runtime version which was used during latest function deployment.\n"
                }
            },
            "type": "object",
            "required": [
                "runtimeVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctions/getFunctionSecretEnvironmentVariable:getFunctionSecretEnvironmentVariable": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Name of the environment variable.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project identifier (due to a known limitation, only project number is supported by this field) of the project that contains the secret. If not set, it will be populated with the function's project, assuming that the secret exists in the same project as of the function.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "ID of the secret in secret manager (not the full resource name).\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the secret (version number or the string \"latest\"). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new clones start.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "projectId",
                "secret",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctions/getFunctionSecretVolume:getFunctionSecretVolume": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "The path within the container to mount the secret volume. For example, setting the\u003cspan pulumi-lang-nodejs=\" mountPath \" pulumi-lang-dotnet=\" MountPath \" pulumi-lang-go=\" mountPath \" pulumi-lang-python=\" mount_path \" pulumi-lang-yaml=\" mountPath \" pulumi-lang-java=\" mountPath \" pulumi-lang-hcl=\" mount_path \"\u003e mountPath \u003c/span\u003eas \"/etc/secrets\" would mount the secret value files under the \"/etc/secrets\" directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount paths: \"/etc/secrets\" Restricted mount paths: \"/cloudsql\", \"/dev/log\", \"/pod\", \"/proc\", \"/var/log\".\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project identifier (due to a known limitation, only project number is supported by this field) of the project that contains the secret. If not set, it will be populated with the function's project, assuming that the secret exists in the same project as of the function.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "ID of the secret in secret manager (not the full resource name).\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctions/getFunctionSecretVolumeVersion:getFunctionSecretVolumeVersion"
                    },
                    "description": "List of secret versions to mount for this secret. If empty, the \"latest\" version of the secret will be made available in a file named after the secret under the mount point.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "projectId",
                "secret",
                "versions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctions/getFunctionSecretVolumeVersion:getFunctionSecretVolumeVersion": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Relative path of the file under the mount path where the secret value for this version will be fetched and made available. For example, setting the\u003cspan pulumi-lang-nodejs=\" mountPath \" pulumi-lang-dotnet=\" MountPath \" pulumi-lang-go=\" mountPath \" pulumi-lang-python=\" mount_path \" pulumi-lang-yaml=\" mountPath \" pulumi-lang-java=\" mountPath \" pulumi-lang-hcl=\" mount_path \"\u003e mountPath \u003c/span\u003eas \"/etc/secrets\" and path as \"/secret_foo\" would mount the secret value file at \"/etc/secrets/secret_foo\".\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the secret (version number or the string \"latest\"). It is preferable to use \"latest\" version with secret volumes as secret value changes are reflected immediately.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctions/getFunctionSourceRepository:getFunctionSourceRepository": {
            "properties": {
                "deployedUrl": {
                    "type": "string",
                    "description": "The URL pointing to the hosted repository where the function was defined at the time of deployment.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The URL pointing to the hosted repository where the function is defined.\n"
                }
            },
            "type": "object",
            "required": [
                "deployedUrl",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/FunctionBuildConfig:FunctionBuildConfig": {
            "properties": {
                "automaticUpdatePolicy": {
                    "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfigAutomaticUpdatePolicy:FunctionBuildConfigAutomaticUpdatePolicy",
                    "description": "Security patches are applied automatically to the runtime without requiring\nthe function to be redeployed.\n"
                },
                "build": {
                    "type": "string",
                    "description": "(Output)\nThe Cloud Build name of the latest successful\ndeployment of the function.\n"
                },
                "dockerRepository": {
                    "type": "string",
                    "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key.\n"
                },
                "entryPoint": {
                    "type": "string",
                    "description": "The name of the function (as defined in source code) that will be executed.\nDefaults to the resource name suffix, if not specified. For backward\ncompatibility, if function with given name is not found, then the system\nwill try to use function named \"function\". For Node.js this is name of a\nfunction exported by the module specified in source_location.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "User-provided build-time environment variables for the function.\n"
                },
                "onDeployUpdatePolicy": {
                    "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfigOnDeployUpdatePolicy:FunctionBuildConfigOnDeployUpdatePolicy",
                    "description": "Security patches are only applied when a function is redeployed.\nStructure is documented below.\n"
                },
                "runtime": {
                    "type": "string",
                    "description": "The runtime in which to run the function. Required when deploying a new\nfunction, optional when updating an existing function.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "The fully-qualified name of the service account to be used for building the container.\n"
                },
                "source": {
                    "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfigSource:FunctionBuildConfigSource",
                    "description": "The location of the function source code.\nStructure is documented below.\n"
                },
                "workerPool": {
                    "type": "string",
                    "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the function.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "automaticUpdatePolicy",
                        "build",
                        "dockerRepository",
                        "environmentVariables",
                        "serviceAccount"
                    ]
                }
            }
        },
        "gcp:cloudfunctionsv2/FunctionBuildConfigAutomaticUpdatePolicy:FunctionBuildConfigAutomaticUpdatePolicy": {
            "type": "object"
        },
        "gcp:cloudfunctionsv2/FunctionBuildConfigOnDeployUpdatePolicy:FunctionBuildConfigOnDeployUpdatePolicy": {
            "properties": {
                "runtimeVersion": {
                    "type": "string",
                    "description": "(Output)\nThe runtime version which was used during latest function deployment.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "runtimeVersion"
                    ]
                }
            }
        },
        "gcp:cloudfunctionsv2/FunctionBuildConfigSource:FunctionBuildConfigSource": {
            "properties": {
                "repoSource": {
                    "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfigSourceRepoSource:FunctionBuildConfigSourceRepoSource",
                    "description": "If provided, get the source from this location in a Cloud Source Repository.\nStructure is documented below.\n"
                },
                "storageSource": {
                    "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfigSourceStorageSource:FunctionBuildConfigSourceStorageSource",
                    "description": "If provided, get the source from this location in Google Cloud Storage.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudfunctionsv2/FunctionBuildConfigSourceRepoSource:FunctionBuildConfigSourceRepoSource": {
            "properties": {
                "branchName": {
                    "type": "string",
                    "description": "Regex matching branches to build.\n"
                },
                "commitSha": {
                    "type": "string",
                    "description": "Regex matching tags to build.\n"
                },
                "dir": {
                    "type": "string",
                    "description": "Directory, relative to the source root, in which to run the build.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "Only trigger a build if the revision regex does\nNOT match the revision regex.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project that owns the Cloud Source Repository. If omitted, the\nproject ID requesting the build is assumed.\n",
                    "willReplaceOnChanges": true
                },
                "repoName": {
                    "type": "string",
                    "description": "Name of the Cloud Source Repository.\n"
                },
                "tagName": {
                    "type": "string",
                    "description": "Regex matching tags to build.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudfunctionsv2/FunctionBuildConfigSourceStorageSource:FunctionBuildConfigSourceStorageSource": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Google Cloud Storage bucket containing the source\n"
                },
                "generation": {
                    "type": "integer",
                    "description": "Google Cloud Storage generation for the object. If the generation\nis omitted, the latest generation will be used.\n"
                },
                "object": {
                    "type": "string",
                    "description": "Google Cloud Storage object containing the source.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "generation"
                    ]
                }
            }
        },
        "gcp:cloudfunctionsv2/FunctionEventTrigger:FunctionEventTrigger": {
            "properties": {
                "eventFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/FunctionEventTriggerEventFilter:FunctionEventTriggerEventFilter"
                    },
                    "description": "Criteria used to filter events.\nStructure is documented below.\n"
                },
                "eventType": {
                    "type": "string",
                    "description": "Required. The type of event to observe.\n"
                },
                "pubsubTopic": {
                    "type": "string",
                    "description": "The name of a Pub/Sub topic in the same project that will be used\nas the transport topic for the event delivery.\n"
                },
                "retryPolicy": {
                    "type": "string",
                    "description": "Describes the retry policy in case of function's execution failure.\nRetried execution is charged as any other execution.\nPossible values are: `RETRY_POLICY_UNSPECIFIED`, `RETRY_POLICY_DO_NOT_RETRY`, `RETRY_POLICY_RETRY`.\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "Optional. The email of the trigger's service account. The service account\nmust have permission to invoke Cloud Run services. If empty, defaults to the\nCompute Engine default service account: {project_number}-compute@developer.gserviceaccount.com.\n"
                },
                "trigger": {
                    "type": "string",
                    "description": "(Output)\nOutput only. The resource name of the Eventarc trigger.\n"
                },
                "triggerRegion": {
                    "type": "string",
                    "description": "The region that the trigger will be in. The trigger will only receive\nevents originating in this region. It can be the same\nregion as the function, a different region or multi-region, or the global\nregion. If not provided, defaults to the same region as the function.\n"
                }
            },
            "type": "object",
            "required": [
                "eventType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "eventType",
                        "pubsubTopic",
                        "serviceAccountEmail",
                        "trigger",
                        "triggerRegion"
                    ]
                }
            }
        },
        "gcp:cloudfunctionsv2/FunctionEventTriggerEventFilter:FunctionEventTriggerEventFilter": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "'Required. The name of a CloudEvents attribute.\nCurrently, only a subset of attributes are supported for filtering. Use the `gcloud eventarc providers describe` command to learn more about events and their attributes.\nDo not filter for the 'type' attribute here, as this is already achieved by the resource's \u003cspan pulumi-lang-nodejs=\"`eventType`\" pulumi-lang-dotnet=\"`EventType`\" pulumi-lang-go=\"`eventType`\" pulumi-lang-python=\"`event_type`\" pulumi-lang-yaml=\"`eventType`\" pulumi-lang-java=\"`eventType`\" pulumi-lang-hcl=\"`event_type`\"\u003e`eventType`\u003c/span\u003e attribute.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "Optional. The operator used for matching the events with the value of\nthe filter. If not specified, only events that have an exact key-value\npair specified in the filter are matched.\nThe only allowed value is `match-path-pattern`.\n[See documentation on path patterns here](https://cloud.google.com/eventarc/docs/path-patterns)'\n"
                },
                "value": {
                    "type": "string",
                    "description": "Required. The value for the attribute.\nIf the operator field is set as `match-path-pattern`, this value can be a path pattern instead of an exact value.\n"
                }
            },
            "type": "object",
            "required": [
                "attribute",
                "value"
            ]
        },
        "gcp:cloudfunctionsv2/FunctionIamBindingCondition:FunctionIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudfunctionsv2/FunctionIamMemberCondition:FunctionIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudfunctionsv2/FunctionServiceConfig:FunctionServiceConfig": {
            "properties": {
                "allTrafficOnLatestRevision": {
                    "type": "boolean",
                    "description": "Whether 100% of traffic is routed to the latest revision. Defaults to true. When false, GCF honors the existing traffic configuration of the underlying Cloud Run service. If that configuration is set to route to LATEST (the default), the new deployment will become LATEST and intercept the traffic. To prevent traffic from shifting, you must manually pin the existing service to a specific revision name in Cloud Run before deploying.\n"
                },
                "availableCpu": {
                    "type": "string",
                    "description": "The number of CPUs used in a single container instance. Default value is calculated from available memory.\n"
                },
                "availableMemory": {
                    "type": "string",
                    "description": "The amount of memory available for a function.\nDefaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is\nsupplied the value is interpreted as bytes.\n"
                },
                "binaryAuthorizationPolicy": {
                    "type": "string",
                    "description": "The binary authorization policy to be checked when deploying the Cloud Run service.\n"
                },
                "directVpcEgress": {
                    "type": "string",
                    "description": "Egress settings for direct VPC. If not provided, it defaults to VPC_EGRESS_PRIVATE_RANGES_ONLY.\nPossible values are: `VPC_EGRESS_ALL_TRAFFIC`, `VPC_EGRESS_PRIVATE_RANGES_ONLY`.\n"
                },
                "directVpcNetworkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/FunctionServiceConfigDirectVpcNetworkInterface:FunctionServiceConfigDirectVpcNetworkInterface"
                    },
                    "description": "The Direct VPC network interface for the Cloud Function. Currently only a single Direct VPC is supported.\nStructure is documented below.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Environment variables that shall be available during function execution.\n"
                },
                "gcfUri": {
                    "type": "string",
                    "description": "(Output)\nURIs of the Service deployed\n"
                },
                "ingressSettings": {
                    "type": "string",
                    "description": "Available ingress settings. Defaults to \"ALLOW_ALL\" if unspecified.\nDefault value is `ALLOW_ALL`.\nPossible values are: `ALLOW_ALL`, `ALLOW_INTERNAL_ONLY`, `ALLOW_INTERNAL_AND_GCLB`.\n"
                },
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "The limit on the maximum number of function instances that may coexist at a\ngiven time.\n"
                },
                "maxInstanceRequestConcurrency": {
                    "type": "integer",
                    "description": "Sets the maximum number of concurrent requests that each instance can receive. Defaults to 1.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "The limit on the minimum number of function instances that may coexist at a\ngiven time.\n"
                },
                "secretEnvironmentVariables": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/FunctionServiceConfigSecretEnvironmentVariable:FunctionServiceConfigSecretEnvironmentVariable"
                    },
                    "description": "Secret environment variables configuration.\nStructure is documented below.\n"
                },
                "secretVolumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/FunctionServiceConfigSecretVolume:FunctionServiceConfigSecretVolume"
                    },
                    "description": "Secret volumes configuration.\nStructure is documented below.\n"
                },
                "service": {
                    "type": "string",
                    "description": "(Output)\nName of the service associated with a Function.\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "The email of the service account for this function.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "The function execution timeout. Execution is considered failed and\ncan be terminated if the function is not completed at the end of the\ntimeout period. Defaults to 60 seconds.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "(Output)\nURI of the Service deployed.\n"
                },
                "vpcConnector": {
                    "type": "string",
                    "description": "The Serverless VPC Access connector that this cloud function can connect to.\n"
                },
                "vpcConnectorEgressSettings": {
                    "type": "string",
                    "description": "Available egress settings.\nPossible values are: `VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED`, `PRIVATE_RANGES_ONLY`, `ALL_TRAFFIC`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "availableCpu",
                        "availableMemory",
                        "directVpcEgress",
                        "environmentVariables",
                        "gcfUri",
                        "maxInstanceCount",
                        "maxInstanceRequestConcurrency",
                        "service",
                        "serviceAccountEmail",
                        "timeoutSeconds",
                        "uri"
                    ]
                }
            }
        },
        "gcp:cloudfunctionsv2/FunctionServiceConfigDirectVpcNetworkInterface:FunctionServiceConfigDirectVpcNetworkInterface": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "The name of the VPC network to which the function will be connected. Specify either a VPC network or a subnet, or both. If you specify only a network, the subnet uses the same name as the network.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The name of the VPC subnetwork that the Cloud Function resource will get IPs from. Specify either a VPC network or a subnet, or both. If both network and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the subnetwork with the same name with the network will be used.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags applied to this Cloud Function resource.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudfunctionsv2/FunctionServiceConfigSecretEnvironmentVariable:FunctionServiceConfigSecretEnvironmentVariable": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Name of the environment variable.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project identifier (preferably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function's project assuming that the secret exists in the same project as of the function.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "Name of the secret in secret manager (not the full resource name).\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the secret (version number or the string 'latest'). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new instances start.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "projectId",
                "secret",
                "version"
            ]
        },
        "gcp:cloudfunctionsv2/FunctionServiceConfigSecretVolume:FunctionServiceConfigSecretVolume": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "The path within the container to mount the secret volume. For example, setting the mountPath as /etc/secrets would mount the secret value files under the /etc/secrets directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount path: /etc/secrets\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project identifier (preferably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function's project assuming that the secret exists in the same project as of the function.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "Name of the secret in secret manager (not the full resource name).\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/FunctionServiceConfigSecretVolumeVersion:FunctionServiceConfigSecretVolumeVersion"
                    },
                    "description": "List of secret versions to mount for this secret. If empty, the latest version of the secret will be made available in a file named after the secret under the mount point.'\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "projectId",
                "secret"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "mountPath",
                        "projectId",
                        "secret",
                        "versions"
                    ]
                }
            }
        },
        "gcp:cloudfunctionsv2/FunctionServiceConfigSecretVolumeVersion:FunctionServiceConfigSecretVolumeVersion": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Relative path of the file under the mount path where the secret value for this version will be fetched and made available. For example, setting the mountPath as '/etc/secrets' and path as\u003cspan pulumi-lang-nodejs=\" secretFoo \" pulumi-lang-dotnet=\" SecretFoo \" pulumi-lang-go=\" secretFoo \" pulumi-lang-python=\" secret_foo \" pulumi-lang-yaml=\" secretFoo \" pulumi-lang-java=\" secretFoo \" pulumi-lang-hcl=\" secret_foo \"\u003e secretFoo \u003c/span\u003ewould mount the secret value file at /etc/secrets/secret_foo.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the secret (version number or the string 'latest'). It is preferable to use latest version with secret volumes as secret value changes are reflected immediately.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "version"
            ]
        },
        "gcp:cloudfunctionsv2/getFunctionBuildConfig:getFunctionBuildConfig": {
            "properties": {
                "automaticUpdatePolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionBuildConfigAutomaticUpdatePolicy:getFunctionBuildConfigAutomaticUpdatePolicy"
                    },
                    "description": "Security patches are applied automatically to the runtime without requiring\nthe function to be redeployed.\n"
                },
                "build": {
                    "type": "string",
                    "description": "The Cloud Build name of the latest successful\ndeployment of the function.\n"
                },
                "dockerRepository": {
                    "type": "string",
                    "description": "User managed repository created in Artifact Registry optionally with a customer managed encryption key.\n"
                },
                "entryPoint": {
                    "type": "string",
                    "description": "The name of the function (as defined in source code) that will be executed.\nDefaults to the resource name suffix, if not specified. For backward\ncompatibility, if function with given name is not found, then the system\nwill try to use function named \"function\". For Node.js this is name of a\nfunction exported by the module specified in source_location.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "User-provided build-time environment variables for the function.\n"
                },
                "onDeployUpdatePolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionBuildConfigOnDeployUpdatePolicy:getFunctionBuildConfigOnDeployUpdatePolicy"
                    },
                    "description": "Security patches are only applied when a function is redeployed.\n"
                },
                "runtime": {
                    "type": "string",
                    "description": "The runtime in which to run the function. Required when deploying a new\nfunction, optional when updating an existing function.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "The fully-qualified name of the service account to be used for building the container.\n"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionBuildConfigSource:getFunctionBuildConfigSource"
                    },
                    "description": "The location of the function source code.\n"
                },
                "workerPool": {
                    "type": "string",
                    "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the function.\n"
                }
            },
            "type": "object",
            "required": [
                "automaticUpdatePolicies",
                "build",
                "dockerRepository",
                "entryPoint",
                "environmentVariables",
                "onDeployUpdatePolicies",
                "runtime",
                "serviceAccount",
                "sources",
                "workerPool"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionBuildConfigAutomaticUpdatePolicy:getFunctionBuildConfigAutomaticUpdatePolicy": {
            "type": "object"
        },
        "gcp:cloudfunctionsv2/getFunctionBuildConfigOnDeployUpdatePolicy:getFunctionBuildConfigOnDeployUpdatePolicy": {
            "properties": {
                "runtimeVersion": {
                    "type": "string",
                    "description": "The runtime version which was used during latest function deployment.\n"
                }
            },
            "type": "object",
            "required": [
                "runtimeVersion"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionBuildConfigSource:getFunctionBuildConfigSource": {
            "properties": {
                "repoSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionBuildConfigSourceRepoSource:getFunctionBuildConfigSourceRepoSource"
                    },
                    "description": "If provided, get the source from this location in a Cloud Source Repository.\n"
                },
                "storageSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionBuildConfigSourceStorageSource:getFunctionBuildConfigSourceStorageSource"
                    },
                    "description": "If provided, get the source from this location in Google Cloud Storage.\n"
                }
            },
            "type": "object",
            "required": [
                "repoSources",
                "storageSources"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionBuildConfigSourceRepoSource:getFunctionBuildConfigSourceRepoSource": {
            "properties": {
                "branchName": {
                    "type": "string",
                    "description": "Regex matching branches to build.\n"
                },
                "commitSha": {
                    "type": "string",
                    "description": "Regex matching tags to build.\n"
                },
                "dir": {
                    "type": "string",
                    "description": "Directory, relative to the source root, in which to run the build.\n"
                },
                "invertRegex": {
                    "type": "boolean",
                    "description": "Only trigger a build if the revision regex does\nNOT match the revision regex.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project that owns the Cloud Source Repository. If omitted, the\nproject ID requesting the build is assumed.\n"
                },
                "repoName": {
                    "type": "string",
                    "description": "Name of the Cloud Source Repository.\n"
                },
                "tagName": {
                    "type": "string",
                    "description": "Regex matching tags to build.\n"
                }
            },
            "type": "object",
            "required": [
                "branchName",
                "commitSha",
                "dir",
                "invertRegex",
                "projectId",
                "repoName",
                "tagName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionBuildConfigSourceStorageSource:getFunctionBuildConfigSourceStorageSource": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Google Cloud Storage bucket containing the source\n"
                },
                "generation": {
                    "type": "integer",
                    "description": "Google Cloud Storage generation for the object. If the generation\nis omitted, the latest generation will be used.\n"
                },
                "object": {
                    "type": "string",
                    "description": "Google Cloud Storage object containing the source.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "generation",
                "object"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionEventTrigger:getFunctionEventTrigger": {
            "properties": {
                "eventFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionEventTriggerEventFilter:getFunctionEventTriggerEventFilter"
                    },
                    "description": "Criteria used to filter events.\n"
                },
                "eventType": {
                    "type": "string",
                    "description": "Required. The type of event to observe.\n"
                },
                "pubsubTopic": {
                    "type": "string",
                    "description": "The name of a Pub/Sub topic in the same project that will be used\nas the transport topic for the event delivery.\n"
                },
                "retryPolicy": {
                    "type": "string",
                    "description": "Describes the retry policy in case of function's execution failure.\nRetried execution is charged as any other execution. Possible values: [\"RETRY_POLICY_UNSPECIFIED\", \"RETRY_POLICY_DO_NOT_RETRY\", \"RETRY_POLICY_RETRY\"]\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "Optional. The email of the trigger's service account. The service account\nmust have permission to invoke Cloud Run services. If empty, defaults to the\nCompute Engine default service account: {project_number}-compute@developer.gserviceaccount.com.\n"
                },
                "trigger": {
                    "type": "string",
                    "description": "Output only. The resource name of the Eventarc trigger.\n"
                },
                "triggerRegion": {
                    "type": "string",
                    "description": "The region that the trigger will be in. The trigger will only receive\nevents originating in this region. It can be the same\nregion as the function, a different region or multi-region, or the global\nregion. If not provided, defaults to the same region as the function.\n"
                }
            },
            "type": "object",
            "required": [
                "eventFilters",
                "eventType",
                "pubsubTopic",
                "retryPolicy",
                "serviceAccountEmail",
                "trigger",
                "triggerRegion"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionEventTriggerEventFilter:getFunctionEventTriggerEventFilter": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "'Required. The name of a CloudEvents attribute.\nCurrently, only a subset of attributes are supported for filtering. Use the 'gcloud eventarc providers describe' command to learn more about events and their attributes.\nDo not filter for the 'type' attribute here, as this is already achieved by the resource's 'event_type' attribute.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "Optional. The operator used for matching the events with the value of\nthe filter. If not specified, only events that have an exact key-value\npair specified in the filter are matched.\nThe only allowed value is 'match-path-pattern'.\n[See documentation on path patterns here](https://cloud.google.com/eventarc/docs/path-patterns)'\n"
                },
                "value": {
                    "type": "string",
                    "description": "Required. The value for the attribute.\nIf the operator field is set as 'match-path-pattern', this value can be a path pattern instead of an exact value.\n"
                }
            },
            "type": "object",
            "required": [
                "attribute",
                "operator",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionServiceConfig:getFunctionServiceConfig": {
            "properties": {
                "allTrafficOnLatestRevision": {
                    "type": "boolean",
                    "description": "Whether 100% of traffic is routed to the latest revision. Defaults to true. When false, GCF honors the existing traffic configuration of the underlying Cloud Run service. If that configuration is set to route to LATEST (the default), the new deployment will become LATEST and intercept the traffic. To prevent traffic from shifting, you must manually pin the existing service to a specific revision name in Cloud Run before deploying.\n"
                },
                "availableCpu": {
                    "type": "string",
                    "description": "The number of CPUs used in a single container instance. Default value is calculated from available memory.\n"
                },
                "availableMemory": {
                    "type": "string",
                    "description": "The amount of memory available for a function.\nDefaults to 256M. Supported units are k, M, G, Mi, Gi. If no unit is\nsupplied the value is interpreted as bytes.\n"
                },
                "binaryAuthorizationPolicy": {
                    "type": "string",
                    "description": "The binary authorization policy to be checked when deploying the Cloud Run service.\n"
                },
                "directVpcEgress": {
                    "type": "string",
                    "description": "Egress settings for direct VPC. If not provided, it defaults to VPC_EGRESS_PRIVATE_RANGES_ONLY. Possible values: [\"VPC_EGRESS_ALL_TRAFFIC\", \"VPC_EGRESS_PRIVATE_RANGES_ONLY\"]\n"
                },
                "directVpcNetworkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionServiceConfigDirectVpcNetworkInterface:getFunctionServiceConfigDirectVpcNetworkInterface"
                    },
                    "description": "The Direct VPC network interface for the Cloud Function. Currently only a single Direct VPC is supported.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Environment variables that shall be available during function execution.\n"
                },
                "gcfUri": {
                    "type": "string",
                    "description": "URIs of the Service deployed\n"
                },
                "ingressSettings": {
                    "type": "string",
                    "description": "Available ingress settings. Defaults to \"ALLOW_ALL\" if unspecified. Default value: \"ALLOW_ALL\" Possible values: [\"ALLOW_ALL\", \"ALLOW_INTERNAL_ONLY\", \"ALLOW_INTERNAL_AND_GCLB\"]\n"
                },
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "The limit on the maximum number of function instances that may coexist at a\ngiven time.\n"
                },
                "maxInstanceRequestConcurrency": {
                    "type": "integer",
                    "description": "Sets the maximum number of concurrent requests that each instance can receive. Defaults to 1.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "The limit on the minimum number of function instances that may coexist at a\ngiven time.\n"
                },
                "secretEnvironmentVariables": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionServiceConfigSecretEnvironmentVariable:getFunctionServiceConfigSecretEnvironmentVariable"
                    },
                    "description": "Secret environment variables configuration.\n"
                },
                "secretVolumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionServiceConfigSecretVolume:getFunctionServiceConfigSecretVolume"
                    },
                    "description": "Secret volumes configuration.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Name of the service associated with a Function.\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "The email of the service account for this function.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "The function execution timeout. Execution is considered failed and\ncan be terminated if the function is not completed at the end of the\ntimeout period. Defaults to 60 seconds.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "URI of the Service deployed.\n"
                },
                "vpcConnector": {
                    "type": "string",
                    "description": "The Serverless VPC Access connector that this cloud function can connect to.\n"
                },
                "vpcConnectorEgressSettings": {
                    "type": "string",
                    "description": "Available egress settings. Possible values: [\"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\", \"PRIVATE_RANGES_ONLY\", \"ALL_TRAFFIC\"]\n"
                }
            },
            "type": "object",
            "required": [
                "allTrafficOnLatestRevision",
                "availableCpu",
                "availableMemory",
                "binaryAuthorizationPolicy",
                "directVpcEgress",
                "directVpcNetworkInterfaces",
                "environmentVariables",
                "gcfUri",
                "ingressSettings",
                "maxInstanceCount",
                "maxInstanceRequestConcurrency",
                "minInstanceCount",
                "secretEnvironmentVariables",
                "secretVolumes",
                "service",
                "serviceAccountEmail",
                "timeoutSeconds",
                "uri",
                "vpcConnector",
                "vpcConnectorEgressSettings"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionServiceConfigDirectVpcNetworkInterface:getFunctionServiceConfigDirectVpcNetworkInterface": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "The name of the VPC network to which the function will be connected. Specify either a VPC network or a subnet, or both. If you specify only a network, the subnet uses the same name as the network.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The name of the VPC subnetwork that the Cloud Function resource will get IPs from. Specify either a VPC network or a subnet, or both. If both network and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the subnetwork with the same name with the network will be used.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags applied to this Cloud Function resource.\n"
                }
            },
            "type": "object",
            "required": [
                "network",
                "subnetwork",
                "tags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionServiceConfigSecretEnvironmentVariable:getFunctionServiceConfigSecretEnvironmentVariable": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Name of the environment variable.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project identifier (preferably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function's project assuming that the secret exists in the same project as of the function.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "Name of the secret in secret manager (not the full resource name).\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the secret (version number or the string 'latest'). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new instances start.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "projectId",
                "secret",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionServiceConfigSecretVolume:getFunctionServiceConfigSecretVolume": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "The path within the container to mount the secret volume. For example, setting the mountPath as /etc/secrets would mount the secret value files under the /etc/secrets directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount path: /etc/secrets\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project identifier (preferably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function's project assuming that the secret exists in the same project as of the function.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "Name of the secret in secret manager (not the full resource name).\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudfunctionsv2/getFunctionServiceConfigSecretVolumeVersion:getFunctionServiceConfigSecretVolumeVersion"
                    },
                    "description": "List of secret versions to mount for this secret. If empty, the latest version of the secret will be made available in a file named after the secret under the mount point.'\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "projectId",
                "secret",
                "versions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudfunctionsv2/getFunctionServiceConfigSecretVolumeVersion:getFunctionServiceConfigSecretVolumeVersion": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Relative path of the file under the mount path where the secret value for this version will be fetched and made available. For example, setting the mountPath as '/etc/secrets' and path as\u003cspan pulumi-lang-nodejs=\" secretFoo \" pulumi-lang-dotnet=\" SecretFoo \" pulumi-lang-go=\" secretFoo \" pulumi-lang-python=\" secret_foo \" pulumi-lang-yaml=\" secretFoo \" pulumi-lang-java=\" secretFoo \" pulumi-lang-hcl=\" secret_foo \"\u003e secretFoo \u003c/span\u003ewould mount the secret value file at /etc/secrets/secret_foo.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Version of the secret (version number or the string 'latest'). It is preferable to use latest version with secret volumes as secret value changes are reflected immediately.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/GroupAdditionalGroupKey:GroupAdditionalGroupKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "(Output)\nThe ID of the entity.\nFor Google-managed entities, the id must be the email address of an existing\ngroup or user.\nFor external-identity-mapped entities, the id must be a string conforming\nto the Identity Source's requirements.\nMust be unique within a namespace.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "(Output)\nThe namespace in which the entity exists.\nIf not specified, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf specified, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of `identitysources/{identity_source_id}`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "namespace"
                    ]
                }
            }
        },
        "gcp:cloudidentity/GroupGroupKey:GroupGroupKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the entity.\nFor Google-managed entities, the id must be the email address of an existing\ngroup or user.\nFor external-identity-mapped entities, the id must be a string conforming\nto the Identity Source's requirements.\nMust be unique within a namespace.\n",
                    "willReplaceOnChanges": true
                },
                "namespace": {
                    "type": "string",
                    "description": "The namespace in which the entity exists.\nIf not specified, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf specified, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of `identitysources/{identity_source_id}`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:cloudidentity/GroupMembershipMemberKey:GroupMembershipMemberKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the entity.\nFor Google-managed entities, the id must be the email address of an existing\ngroup or user.\nFor external-identity-mapped entities, the id must be a string conforming\nto the Identity Source's requirements.\nMust be unique within a namespace.\n",
                    "willReplaceOnChanges": true
                },
                "namespace": {
                    "type": "string",
                    "description": "The namespace in which the entity exists.\nIf not specified, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf specified, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of `identitysources/{identity_source_id}`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:cloudidentity/GroupMembershipPreferredMemberKey:GroupMembershipPreferredMemberKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the entity.\nFor Google-managed entities, the id must be the email address of an existing\ngroup or user.\nFor external-identity-mapped entities, the id must be a string conforming\nto the Identity Source's requirements.\nMust be unique within a namespace.\n",
                    "willReplaceOnChanges": true
                },
                "namespace": {
                    "type": "string",
                    "description": "The namespace in which the entity exists.\nIf not specified, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf specified, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of `identitysources/{identity_source_id}`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:cloudidentity/GroupMembershipRole:GroupMembershipRole": {
            "properties": {
                "expiryDetail": {
                    "$ref": "#/types/gcp:cloudidentity/GroupMembershipRoleExpiryDetail:GroupMembershipRoleExpiryDetail",
                    "description": "The MembershipRole expiry details, only supported for MEMBER role.\nOther roles cannot be accompanied with MEMBER role having expiry.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the MembershipRole. Must be one of OWNER, MANAGER, MEMBER.\nPossible values are: `OWNER`, `MANAGER`, `MEMBER`.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudidentity/GroupMembershipRoleExpiryDetail:GroupMembershipRoleExpiryDetail": {
            "properties": {
                "expireTime": {
                    "type": "string",
                    "description": "The time at which the MembershipRole will expire.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond\nresolution and up to nine fractional digits.\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                }
            },
            "type": "object",
            "required": [
                "expireTime"
            ]
        },
        "gcp:cloudidentity/PolicyPolicyQuery:PolicyPolicyQuery": {
            "properties": {
                "group": {
                    "type": "string",
                    "description": "The group that the query applies to.\n",
                    "willReplaceOnChanges": true
                },
                "orgUnit": {
                    "type": "string",
                    "description": "The OrgUnit the query applies to.\n",
                    "willReplaceOnChanges": true
                },
                "query": {
                    "type": "string",
                    "description": "The CEL query that defines which entities the Policy applies to.\n",
                    "willReplaceOnChanges": true
                },
                "sortOrder": {
                    "type": "integer",
                    "description": "(Output)\nDecimal sort order of this PolicyQuery.\n"
                }
            },
            "type": "object",
            "required": [
                "orgUnit"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "orgUnit",
                        "sortOrder"
                    ]
                }
            }
        },
        "gcp:cloudidentity/PolicySetting:PolicySetting": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "The type of the Setting.\n",
                    "willReplaceOnChanges": true
                },
                "valueJson": {
                    "type": "string",
                    "description": "The value of the Setting as JSON string.\n"
                }
            },
            "type": "object",
            "required": [
                "type",
                "valueJson"
            ]
        },
        "gcp:cloudidentity/getGroupLookupGroupKey:getGroupLookupGroupKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "(Required) The ID of the entity.\nFor Google-managed entities, the id is the email address of an existing group or user.\nFor external-identity-mapped entities, the id is a string conforming\nto the Identity Source's requirements.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "(Optional) The namespace in which the entity exists.\nIf not populated, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf populated, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of `identitysources/{identity_source_id}`.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:cloudidentity/getGroupMembershipsMembership:getGroupMembershipsMembership": {
            "properties": {
                "createIgnoreAlreadyExists": {
                    "type": "boolean",
                    "description": "If set to true, skip group member creation if a membership with the same name already exists. Defaults to false.\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "The time when the Membership was created.\n"
                },
                "deletionPolicy": {
                    "type": "string",
                    "description": "Whether Terraform will be prevented from destroying the instance. Defaults to \"DELETE\".\nWhen a 'terraform destroy' or 'terraform apply' would delete the instance,\nthe command will fail if this field is set to \"PREVENT\" in Terraform state.\nWhen set to \"ABANDON\", the command will remove the resource from Terraform\nmanagement without updating or deleting the resource in the API.\nWhen set to \"DELETE\", deleting the resource is allowed.\n"
                },
                "group": {
                    "type": "string",
                    "description": "The parent Group resource under which to lookup the Membership names. Must be of the form groups/{group_id}.\n"
                },
                "memberKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getGroupMembershipsMembershipMemberKey:getGroupMembershipsMembershipMemberKey"
                    },
                    "description": "EntityKey of the member.  Structure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the MembershipRole. One of OWNER, MANAGER, MEMBER.\n"
                },
                "preferredMemberKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getGroupMembershipsMembershipPreferredMemberKey:getGroupMembershipsMembershipPreferredMemberKey"
                    },
                    "description": "EntityKey of the member.  Structure is documented below.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getGroupMembershipsMembershipRole:getGroupMembershipsMembershipRole"
                    },
                    "description": "The MembershipRoles that apply to the Membership. Structure is documented below.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the membership.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time when the Membership was last updated.\n"
                }
            },
            "type": "object",
            "required": [
                "createIgnoreAlreadyExists",
                "createTime",
                "deletionPolicy",
                "group",
                "memberKeys",
                "name",
                "preferredMemberKeys",
                "roles",
                "type",
                "updateTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupMembershipsMembershipMemberKey:getGroupMembershipsMembershipMemberKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the entity. For Google-managed entities, the id is the email address of an existing\ngroup or user. For external-identity-mapped entities, the id is a string conforming\nto the Identity Source's requirements.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "The namespace in which the entity exists.\nIf not populated, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf populated, the EntityKey represents an external-identity-mapped group.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "namespace"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupMembershipsMembershipPreferredMemberKey:getGroupMembershipsMembershipPreferredMemberKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the entity. For Google-managed entities, the id is the email address of an existing\ngroup or user. For external-identity-mapped entities, the id is a string conforming\nto the Identity Source's requirements.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "The namespace in which the entity exists.\nIf not populated, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf populated, the EntityKey represents an external-identity-mapped group.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "namespace"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupMembershipsMembershipRole:getGroupMembershipsMembershipRole": {
            "properties": {
                "expiryDetails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getGroupMembershipsMembershipRoleExpiryDetail:getGroupMembershipsMembershipRoleExpiryDetail"
                    },
                    "description": "The MembershipRole expiry details, only supported for MEMBER role.\nOther roles cannot be accompanied with MEMBER role having expiry.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the MembershipRole. One of OWNER, MANAGER, MEMBER.\n"
                }
            },
            "type": "object",
            "required": [
                "expiryDetails",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupMembershipsMembershipRoleExpiryDetail:getGroupMembershipsMembershipRoleExpiryDetail": {
            "properties": {
                "expireTime": {
                    "type": "string",
                    "description": "The time at which the MembershipRole will expire.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond\nresolution and up to nine fractional digits.\n\nExamples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                }
            },
            "type": "object",
            "required": [
                "expireTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupTransitiveMembershipsMembership:getGroupTransitiveMembershipsMembership": {
            "properties": {
                "member": {
                    "type": "string",
                    "description": "EntityKey of the member.  This value will be either a userKey in the format `users/000000000000000000000` with a numerical id or a groupKey in the format `groups/000ab0000ab0000` with a hexadecimal id.\n"
                },
                "preferredMemberKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getGroupTransitiveMembershipsMembershipPreferredMemberKey:getGroupTransitiveMembershipsMembershipPreferredMemberKey"
                    },
                    "description": "EntityKey of the member.  Structure is documented below.\n"
                },
                "relationType": {
                    "type": "string",
                    "description": "The relation between the group and the transitive member. The value can be DIRECT, INDIRECT, or DIRECT_AND_INDIRECT.\n"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getGroupTransitiveMembershipsMembershipRole:getGroupTransitiveMembershipsMembershipRole"
                    },
                    "description": "The TransitiveMembershipRoles that apply to the Membership. Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "member",
                "preferredMemberKeys",
                "relationType",
                "roles"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupTransitiveMembershipsMembershipPreferredMemberKey:getGroupTransitiveMembershipsMembershipPreferredMemberKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the entity. For Google-managed entities, the id is the email address of an existing\ngroup or user. For external-identity-mapped entities, the id is a string conforming\nto the Identity Source's requirements.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "The namespace in which the entity exists.\nIf not populated, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf populated, the EntityKey represents an external-identity-mapped group.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "namespace"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupTransitiveMembershipsMembershipRole:getGroupTransitiveMembershipsMembershipRole": {
            "properties": {
                "role": {
                    "type": "string",
                    "description": "The name of the TransitiveMembershipRole. One of OWNER, MANAGER, MEMBER.\n"
                }
            },
            "type": "object",
            "required": [
                "role"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupsGroup:getGroupsGroup": {
            "properties": {
                "additionalGroupKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getGroupsGroupAdditionalGroupKey:getGroupsGroupAdditionalGroupKey"
                    },
                    "description": "Additional group keys associated with the Group\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "The time when the Group was created.\n"
                },
                "deletionPolicy": {
                    "type": "string",
                    "description": "Whether Terraform will be prevented from destroying the instance. Defaults to \"DELETE\".\nWhen a 'terraform destroy' or 'terraform apply' would delete the instance,\nthe command will fail if this field is set to \"PREVENT\" in Terraform state.\nWhen set to \"ABANDON\", the command will remove the resource from Terraform\nmanagement without updating or deleting the resource in the API.\nWhen set to \"DELETE\", deleting the resource is allowed.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An extended description to help users determine the purpose of a Group.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the Group.\n"
                },
                "groupKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getGroupsGroupGroupKey:getGroupsGroupGroupKey"
                    },
                    "description": "EntityKey of the Group.  Structure is documented below.\n"
                },
                "initialGroupConfig": {
                    "type": "string",
                    "description": "The initial configuration options for creating a Group.\n\nSee the\n[API reference](https://cloud.google.com/identity/docs/reference/rest/v1beta1/groups/create#initialgroupconfig)\nfor possible values. Default value: \"EMPTY\" Possible values: [\"INITIAL_GROUP_CONFIG_UNSPECIFIED\", \"WITH_INITIAL_OWNER\", \"EMPTY\"]\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The labels that apply to the Group.\nContains 'cloudidentity.googleapis.com/groups.discussion_forum': '' if the Group is a Google Group or\n'system/groups/external': '' if the Group is an external-identity-mapped group.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Resource name of the Group in the format: groups/{group_id}, where \u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\" pulumi-lang-hcl=\"`group_id`\"\u003e`groupId`\u003c/span\u003e is the unique ID assigned to the Group.\n"
                },
                "parent": {
                    "type": "string",
                    "description": "The parent resource under which to list all Groups. Must be of the form identitysources/{identity_source_id} for external- identity-mapped groups or customers/{customer_id} for Google Groups.\n"
                },
                "updateTime": {
                    "type": "string",
                    "description": "The time when the Group was last updated.\n"
                }
            },
            "type": "object",
            "required": [
                "additionalGroupKeys",
                "createTime",
                "deletionPolicy",
                "description",
                "displayName",
                "groupKeys",
                "initialGroupConfig",
                "labels",
                "name",
                "parent",
                "updateTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupsGroupAdditionalGroupKey:getGroupsGroupAdditionalGroupKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the entity.\nFor Google-managed entities, the id is the email address of an existing group or user.\nFor external-identity-mapped entities, the id is a string conforming\nto the Identity Source's requirements.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "The namespace in which the entity exists.\nIf not populated, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf populated, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of `identitysources/{identity_source_id}`.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "namespace"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getGroupsGroupGroupKey:getGroupsGroupGroupKey": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the entity.\nFor Google-managed entities, the id is the email address of an existing group or user.\nFor external-identity-mapped entities, the id is a string conforming\nto the Identity Source's requirements.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "The namespace in which the entity exists.\nIf not populated, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\nIf populated, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of `identitysources/{identity_source_id}`.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "namespace"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getPoliciesPolicy:getPoliciesPolicy": {
            "properties": {
                "customer": {
                    "type": "string",
                    "description": "The customer that the policy belongs to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The resource name of the policy.\n"
                },
                "policyQueries": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudidentity/getPoliciesPolicyPolicyQuery:getPoliciesPolicyPolicyQuery"
                    },
                    "description": "A list containing the CEL query that defines which entities the policy applies to. Structure is documented below.\n"
                },
                "setting": {
                    "type": "string",
                    "description": "The setting configured by this policy, represented as a JSON string.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the policy.\n"
                }
            },
            "type": "object",
            "required": [
                "customer",
                "name",
                "policyQueries",
                "setting",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getPoliciesPolicyPolicyQuery:getPoliciesPolicyPolicyQuery": {
            "properties": {
                "group": {
                    "type": "string",
                    "description": "The group that the policy applies to.\n"
                },
                "orgUnit": {
                    "type": "string",
                    "description": "The org unit that the policy applies to.\n"
                },
                "query": {
                    "type": "string",
                    "description": "The query that defines which entities the policy applies to.\n"
                },
                "sortOrder": {
                    "type": "number",
                    "description": "The sort order of the policy.\n"
                }
            },
            "type": "object",
            "required": [
                "group",
                "orgUnit",
                "query",
                "sortOrder"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudidentity/getPolicyPolicyQuery:getPolicyPolicyQuery": {
            "properties": {
                "group": {
                    "type": "string",
                    "description": "The group that the policy applies to.\n"
                },
                "orgUnit": {
                    "type": "string",
                    "description": "The org unit that the policy applies to.\n"
                },
                "query": {
                    "type": "string",
                    "description": "The query that defines which entities the policy applies to.\n"
                },
                "sortOrder": {
                    "type": "number",
                    "description": "The sort order of the policy.\n"
                }
            },
            "type": "object",
            "required": [
                "group",
                "orgUnit",
                "query",
                "sortOrder"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudquota/SQuotaPreferenceQuotaConfig:SQuotaPreferenceQuotaConfig": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The annotations map for clients to store small amounts of arbitrary data. Do not put PII or other sensitive information here. See https://google.aip.dev/128#annotations.\nAn object containing a list of \"key: value\" pairs. Example: `{ \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }`.\n"
                },
                "grantedValue": {
                    "type": "string",
                    "description": "(Output)\nGranted quota value.\n"
                },
                "preferredValue": {
                    "type": "string",
                    "description": "The preferred value. Must be greater than or equal to -1. If set to -1, it means the value is \"unlimited\".\n"
                },
                "requestOrigin": {
                    "type": "string",
                    "description": "(Output)\nThe origin of the quota preference request.\n"
                },
                "stateDetail": {
                    "type": "string",
                    "description": "(Output)\nOptional details about the state of this quota preference.\n"
                },
                "traceId": {
                    "type": "string",
                    "description": "(Output)\nThe trace id that the Google Cloud uses to provision the requested quota. This trace id may be used by the client to contact Cloud support to track the state of a quota preference request. The trace id is only produced for increase requests and is unique for each request. The quota decrease requests do not have a trace id.\n"
                }
            },
            "type": "object",
            "required": [
                "preferredValue"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "grantedValue",
                        "preferredValue",
                        "requestOrigin",
                        "stateDetail",
                        "traceId"
                    ]
                }
            }
        },
        "gcp:cloudquota/getSQuotaInfoDimensionsInfo:getSQuotaInfoDimensionsInfo": {
            "properties": {
                "applicableLocations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The applicable regions or zones of this dimensions info. The field will be set to `['global']` for quotas that are not per region or per zone. Otherwise, it will be set to the list of locations this dimension info is applicable to.\n"
                },
                "details": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudquota/getSQuotaInfoDimensionsInfoDetail:getSQuotaInfoDimensionsInfoDetail"
                    },
                    "description": "The quota details for a map of dimensions.\n"
                },
                "dimensions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The map of dimensions for this dimensions info. The key of a map entry is \"region\", \"zone\" or the name of a service specific dimension, and the value of a map entry is the value of the dimension. If a dimension does not appear in the map of dimensions, the dimensions info applies to all the dimension values except for those that have another DimenisonInfo instance configured for the specific value. Example: {\"provider\" : \"Foo Inc\"} where \"provider\" is a service specific dimension of a quota.\n"
                }
            },
            "type": "object",
            "required": [
                "applicableLocations",
                "details",
                "dimensions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudquota/getSQuotaInfoDimensionsInfoDetail:getSQuotaInfoDimensionsInfoDetail": {
            "properties": {
                "value": {
                    "type": "string",
                    "description": "The value currently in effect and being enforced.\n"
                }
            },
            "type": "object",
            "required": [
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudquota/getSQuotaInfoQuotaIncreaseEligibility:getSQuotaInfoQuotaIncreaseEligibility": {
            "properties": {
                "ineligibilityReason": {
                    "type": "string",
                    "description": "The enumeration of reasons when it is ineligible to request increase adjustment.\n"
                },
                "isEligible": {
                    "type": "boolean",
                    "description": "Whether a higher quota value can be requested for the quota.\n"
                }
            },
            "type": "object",
            "required": [
                "ineligibilityReason",
                "isEligible"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudquota/getSQuotaInfosQuotaInfo:getSQuotaInfosQuotaInfo": {
            "properties": {
                "containerType": {
                    "type": "string",
                    "description": "(Output) The container type of the QuotaInfo.\n"
                },
                "dimensions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The map of dimensions for this dimensions info. The key of a map entry is \"region\", \"zone\" or the name of a service specific dimension, and the value of a map entry is the value of the dimension. If a dimension does not appear in the map of dimensions, the dimensions info applies to all the dimension values except for those that have another DimenisonInfo instance configured for the specific value. Example: {\"provider\" : \"Foo Inc\"} where \"provider\" is a service specific dimension of a quota.\n"
                },
                "dimensionsInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudquota/getSQuotaInfosQuotaInfoDimensionsInfo:getSQuotaInfosQuotaInfoDimensionsInfo"
                    },
                    "description": "(Output) The collection of dimensions info ordered by their dimensions from more specific ones to less specific ones.\n"
                },
                "isConcurrent": {
                    "type": "boolean",
                    "description": "(Output) Whether the quota is a concurrent quota. Concurrent quotas are enforced on the total number of concurrent operations in flight at any given time.\n"
                },
                "isFixed": {
                    "type": "boolean",
                    "description": "(Output) Whether the quota value is fixed or adjustable.\n"
                },
                "isPrecise": {
                    "type": "boolean",
                    "description": "(Output) Whether this is a precise quota. A precise quota is tracked with absolute precision. In contrast, an imprecise quota is not tracked with precision.\n"
                },
                "metric": {
                    "type": "string",
                    "description": "(Output) The metric of the quota. It specifies the resources consumption the quota is defined for, for example: `compute.googleapis.com/cpus`.\n"
                },
                "metricDisplayName": {
                    "type": "string",
                    "description": "(Output) The display name of the quota metric.\n"
                },
                "metricUnit": {
                    "type": "string",
                    "description": "(Output) The unit in which the metric value is reported, e.g., `MByte`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output) Resource name of this QuotaInfo, for example: `projects/123/locations/global/services/compute.googleapis.com/quotaInfos/CpusPerProjectPerRegion`.\n"
                },
                "quotaDisplayName": {
                    "type": "string",
                    "description": "(Output) The display name of the quota.\n"
                },
                "quotaId": {
                    "type": "string"
                },
                "quotaIncreaseEligibilities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudquota/getSQuotaInfosQuotaInfoQuotaIncreaseEligibility:getSQuotaInfosQuotaInfoQuotaIncreaseEligibility"
                    },
                    "description": "(Output) Whether it is eligible to request a higher quota value for this quota.\n"
                },
                "refreshInterval": {
                    "type": "string",
                    "description": "(Output) The reset time interval for the quota. Refresh interval applies to rate quota only. Example: \"minute\" for per minute, \"day\" for per day, or \"10 seconds\" for every 10 seconds.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service in which the quotas are defined.\n"
                },
                "serviceRequestQuotaUri": {
                    "type": "string",
                    "description": "(Output) URI to the page where users can request more quota for the cloud service, for example: `https://console.cloud.google.com/iam-admin/quotas`.\n"
                }
            },
            "type": "object",
            "required": [
                "containerType",
                "dimensions",
                "dimensionsInfos",
                "isConcurrent",
                "isFixed",
                "isPrecise",
                "metric",
                "metricDisplayName",
                "metricUnit",
                "name",
                "quotaDisplayName",
                "quotaId",
                "quotaIncreaseEligibilities",
                "refreshInterval",
                "service",
                "serviceRequestQuotaUri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudquota/getSQuotaInfosQuotaInfoDimensionsInfo:getSQuotaInfosQuotaInfoDimensionsInfo": {
            "properties": {
                "applicableLocations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The applicable regions or zones of this dimensions info. The field will be set to `['global']` for quotas that are not per region or per zone. Otherwise, it will be set to the list of locations this dimension info is applicable to.\n"
                },
                "details": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudquota/getSQuotaInfosQuotaInfoDimensionsInfoDetail:getSQuotaInfosQuotaInfoDimensionsInfoDetail"
                    },
                    "description": "The quota details for a map of dimensions.\n"
                },
                "dimensions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The map of dimensions for this dimensions info. The key of a map entry is \"region\", \"zone\" or the name of a service specific dimension, and the value of a map entry is the value of the dimension. If a dimension does not appear in the map of dimensions, the dimensions info applies to all the dimension values except for those that have another DimenisonInfo instance configured for the specific value. Example: {\"provider\" : \"Foo Inc\"} where \"provider\" is a service specific dimension of a quota.\n"
                }
            },
            "type": "object",
            "required": [
                "applicableLocations",
                "details",
                "dimensions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudquota/getSQuotaInfosQuotaInfoDimensionsInfoDetail:getSQuotaInfosQuotaInfoDimensionsInfoDetail": {
            "properties": {
                "value": {
                    "type": "string",
                    "description": "The value currently in effect and being enforced.\n"
                }
            },
            "type": "object",
            "required": [
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudquota/getSQuotaInfosQuotaInfoQuotaIncreaseEligibility:getSQuotaInfosQuotaInfoQuotaIncreaseEligibility": {
            "properties": {
                "ineligibilityReason": {
                    "type": "string",
                    "description": "The enumeration of reasons when it is ineligible to request increase adjustment.\n"
                },
                "isEligible": {
                    "type": "boolean",
                    "description": "Whether a higher quota value can be requested for the quota.\n"
                }
            },
            "type": "object",
            "required": [
                "ineligibilityReason",
                "isEligible"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/DomainMappingMetadata:DomainMappingMetadata": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Annotations is a key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\n**Note**: The Cloud Run API may add additional annotations that were not provided in your config.\nIf the provider plan shows a diff where a server-side annotation is added, you can add it to your config\nor apply the lifecycle.ignore_changes rule to the metadata.0.annotations field.\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field \u003cspan pulumi-lang-nodejs=\"`effectiveAnnotations`\" pulumi-lang-dotnet=\"`EffectiveAnnotations`\" pulumi-lang-go=\"`effectiveAnnotations`\" pulumi-lang-python=\"`effective_annotations`\" pulumi-lang-yaml=\"`effectiveAnnotations`\" pulumi-lang-java=\"`effectiveAnnotations`\" pulumi-lang-hcl=\"`effective_annotations`\"\u003e`effectiveAnnotations`\u003c/span\u003e for all of the annotations present on the resource.\n",
                    "willReplaceOnChanges": true
                },
                "effectiveAnnotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nAll of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services.\n",
                    "willReplaceOnChanges": true
                },
                "effectiveLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nAll of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "generation": {
                    "type": "integer",
                    "description": "(Output)\nA sequence number representing a specific generation of the desired state.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand routes.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field \u003cspan pulumi-lang-nodejs=\"`effectiveLabels`\" pulumi-lang-dotnet=\"`EffectiveLabels`\" pulumi-lang-go=\"`effectiveLabels`\" pulumi-lang-python=\"`effective_labels`\" pulumi-lang-yaml=\"`effectiveLabels`\" pulumi-lang-java=\"`effectiveLabels`\" pulumi-lang-hcl=\"`effective_labels`\"\u003e`effectiveLabels`\u003c/span\u003e for all of the labels present on the resource.\n",
                    "willReplaceOnChanges": true
                },
                "namespace": {
                    "type": "string",
                    "description": "In Cloud Run the namespace must be equal to either the\nproject ID or project number.\n",
                    "willReplaceOnChanges": true
                },
                "pulumiLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "resourceVersion": {
                    "type": "string",
                    "description": "(Output)\nAn opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. They may only be valid for a\nparticular resource or set of resources.\nMore info:\nhttps://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "(Output)\nSelfLink is a URL representing this object.\n"
                },
                "uid": {
                    "type": "string",
                    "description": "(Output)\nUID is a unique id generated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids\n"
                }
            },
            "type": "object",
            "required": [
                "namespace"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "effectiveAnnotations",
                        "effectiveLabels",
                        "generation",
                        "namespace",
                        "pulumiLabels",
                        "resourceVersion",
                        "selfLink",
                        "uid"
                    ]
                }
            }
        },
        "gcp:cloudrun/DomainMappingSpec:DomainMappingSpec": {
            "properties": {
                "certificateMode": {
                    "type": "string",
                    "description": "The mode of the certificate.\nDefault value is `AUTOMATIC`.\nPossible values are: `NONE`, `AUTOMATIC`.\n",
                    "willReplaceOnChanges": true
                },
                "forceOverride": {
                    "type": "boolean",
                    "description": "If set, the mapping will override any mapping set before this spec was set.\nIt is recommended that the user leaves this empty to receive an error\nwarning about a potential conflict and only set it once the respective UI\nhas given such a warning.\n",
                    "willReplaceOnChanges": true
                },
                "routeName": {
                    "type": "string",
                    "description": "The name of the Cloud Run Service that this DomainMapping applies to.\nThe route must exist.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "routeName"
            ]
        },
        "gcp:cloudrun/DomainMappingStatus:DomainMappingStatus": {
            "properties": {
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/DomainMappingStatusCondition:DomainMappingStatusCondition"
                    },
                    "description": "(Output)\nArray of observed DomainMappingConditions, indicating the current state\nof the DomainMapping.\nStructure is documented below.\n"
                },
                "mappedRouteName": {
                    "type": "string",
                    "description": "(Output)\nThe name of the route that the mapping currently points to.\n"
                },
                "observedGeneration": {
                    "type": "integer",
                    "description": "(Output)\nObservedGeneration is the 'Generation' of the DomainMapping that\nwas last processed by the controller.\n"
                },
                "resourceRecords": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/DomainMappingStatusResourceRecord:DomainMappingStatusResourceRecord"
                    },
                    "description": "The resource records required to configure this domain mapping. These\nrecords must be added to the domain's DNS configuration in order to\nserve the application via this domain mapping.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "conditions",
                        "mappedRouteName",
                        "observedGeneration"
                    ]
                }
            }
        },
        "gcp:cloudrun/DomainMappingStatusCondition:DomainMappingStatusCondition": {
            "properties": {
                "message": {
                    "type": "string",
                    "description": "(Output)\nHuman readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nOne-word CamelCase reason for the condition's current status.\n"
                },
                "status": {
                    "type": "string",
                    "description": "(Output)\nStatus of the condition, one of True, False, Unknown.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Resource record type. Example: `AAAA`.\nPossible values are: `A`, `AAAA`, `CNAME`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "message",
                        "reason",
                        "status",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrun/DomainMappingStatusResourceRecord:DomainMappingStatusResourceRecord": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name should be a [verified](https://support.google.com/webmasters/answer/9008080) domain\n"
                },
                "rrdata": {
                    "type": "string",
                    "description": "(Output)\nData for this record. Values vary by record type, as defined in RFC 1035\n(section 5) and RFC 1034 (section 3.6.1).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Resource record type. Example: `AAAA`.\nPossible values are: `A`, `AAAA`, `CNAME`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "rrdata"
                    ]
                }
            }
        },
        "gcp:cloudrun/IamBindingCondition:IamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudrun/IamMemberCondition:IamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudrun/ServiceMetadata:ServiceMetadata": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Annotations is a key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\n**Note**: The Cloud Run API may add additional annotations that were not provided in your config.\nIf the provider plan shows a diff where a server-side annotation is added, you can add it to your config\nor apply the lifecycle.ignore_changes rule to the metadata.0.annotations field.\nAnnotations with `run.googleapis.com/` and `autoscaling.knative.dev` are restricted. Use the following annotation\nkeys to configure features on a Service:\n- `run.googleapis.com/binary-authorization-breakglass` sets the [Binary Authorization breakglass](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--breakglass).\n- `run.googleapis.com/binary-authorization` sets the [Binary Authorization](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--binary-authorization).\n- `run.googleapis.com/client-name` sets the client name calling the Cloud Run API.\n- `run.googleapis.com/custom-audiences` sets the [custom audiences](https://cloud.google.com/sdk/gcloud/reference/alpha/run/deploy#--add-custom-audiences)\nthat can be used in the audience field of ID token for authenticated requests.\n- `run.googleapis.com/description` sets a user defined description for the Service.\n- `run.googleapis.com/ingress` sets the [ingress settings](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--ingress)\nfor the Service. For example, `\"run.googleapis.com/ingress\" = \"all\"`.\n- `run.googleapis.com/launch-stage` sets the [launch stage](https://cloud.google.com/run/docs/troubleshooting#launch-stage-validation)\nwhen a preview feature is used. For example, `\"run.googleapis.com/launch-stage\": \"BETA\"`\n- `run.googleapis.com/minScale` sets the [minimum number of container instances](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--min) of the Service.\n- `run.googleapis.com/scalingMode` sets the type of scaling mode for the service. The supported values for scaling mode are \"manual\" and \"automatic\". If not provided, it defaults to \"automatic\".\n- `run.googleapis.com/manualInstanceCount` sets the total instance count for the service in manual scaling mode. This number of instances is divided among all revisions with specified traffic based on the percent of traffic they are receiving.\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field \u003cspan pulumi-lang-nodejs=\"`effectiveAnnotations`\" pulumi-lang-dotnet=\"`EffectiveAnnotations`\" pulumi-lang-go=\"`effectiveAnnotations`\" pulumi-lang-python=\"`effective_annotations`\" pulumi-lang-yaml=\"`effectiveAnnotations`\" pulumi-lang-java=\"`effectiveAnnotations`\" pulumi-lang-hcl=\"`effective_annotations`\"\u003e`effectiveAnnotations`\u003c/span\u003e for all of the annotations present on the resource.\n"
                },
                "effectiveAnnotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nAll of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services.\n"
                },
                "effectiveLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nAll of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n",
                    "secret": true
                },
                "generation": {
                    "type": "integer",
                    "description": "(Output)\nA sequence number representing a specific generation of the desired state.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand routes.\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field \u003cspan pulumi-lang-nodejs=\"`effectiveLabels`\" pulumi-lang-dotnet=\"`EffectiveLabels`\" pulumi-lang-go=\"`effectiveLabels`\" pulumi-lang-python=\"`effective_labels`\" pulumi-lang-yaml=\"`effectiveLabels`\" pulumi-lang-java=\"`effectiveLabels`\" pulumi-lang-hcl=\"`effective_labels`\"\u003e`effectiveLabels`\u003c/span\u003e for all of the labels present on the resource.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "In Cloud Run the namespace must be equal to either the\nproject ID or project number.\n"
                },
                "pulumiLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.\n",
                    "secret": true
                },
                "resourceVersion": {
                    "type": "string",
                    "description": "(Output)\nAn opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. They may only be valid for a\nparticular resource or set of resources.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "(Output)\nSelfLink is a URL representing this object.\n"
                },
                "uid": {
                    "type": "string",
                    "description": "(Output)\nUID is a unique id generated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "effectiveAnnotations",
                        "effectiveLabels",
                        "generation",
                        "namespace",
                        "pulumiLabels",
                        "resourceVersion",
                        "selfLink",
                        "uid"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceStatus:ServiceStatus": {
            "properties": {
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceStatusCondition:ServiceStatusCondition"
                    },
                    "description": "(Output)\nArray of observed Service Conditions, indicating the current ready state of the service.\nStructure is documented below.\n"
                },
                "latestCreatedRevisionName": {
                    "type": "string",
                    "description": "(Output)\nFrom ConfigurationStatus. LatestCreatedRevisionName is the last revision that was created\nfrom this Service's Configuration. It might not be ready yet, for that use\nLatestReadyRevisionName.\n"
                },
                "latestReadyRevisionName": {
                    "type": "string",
                    "description": "(Output)\nFrom ConfigurationStatus. LatestReadyRevisionName holds the name of the latest Revision\nstamped out from this Service's Configuration that has had its \"Ready\" condition become\n\"True\".\n"
                },
                "observedGeneration": {
                    "type": "integer",
                    "description": "(Output)\nObservedGeneration is the 'Generation' of the Route that was last processed by the\ncontroller.\nClients polling for completed reconciliation should poll until observedGeneration =\nmetadata.generation and the Ready condition's status is True or False.\n"
                },
                "traffics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceStatusTraffic:ServiceStatusTraffic"
                    },
                    "description": "Traffic specifies how to distribute traffic over a collection of Knative Revisions\nand Configurations\nStructure is documented below.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nURL displays the URL for accessing tagged traffic targets. URL is displayed in status,\nand is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname,\nbut may not contain anything else (e.g. basic auth, url path, etc.)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "conditions",
                        "latestCreatedRevisionName",
                        "latestReadyRevisionName",
                        "observedGeneration",
                        "traffics",
                        "url"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceStatusCondition:ServiceStatusCondition": {
            "properties": {
                "message": {
                    "type": "string",
                    "description": "(Output)\nHuman readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nOne-word CamelCase reason for the condition's current status.\n"
                },
                "status": {
                    "type": "string",
                    "description": "(Output)\nStatus of the condition, one of True, False, Unknown.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nType of domain mapping condition.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "message",
                        "reason",
                        "status",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceStatusTraffic:ServiceStatusTraffic": {
            "properties": {
                "latestRevision": {
                    "type": "boolean",
                    "description": "LatestRevision may be optionally provided to indicate that the latest ready\nRevision of the Configuration should be used for this traffic target. When\nprovided LatestRevision must be true if RevisionName is empty; it must be\nfalse when RevisionName is non-empty.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "Percent specifies percent of the traffic to this Revision or Configuration.\n"
                },
                "revisionName": {
                    "type": "string",
                    "description": "RevisionName of a specific revision to which to send this portion of traffic.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Tag is optionally used to expose a dedicated url for referencing this target exclusively.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nURL displays the URL for accessing tagged traffic targets. URL is displayed in status,\nand is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname,\nbut may not contain anything else (e.g. basic auth, url path, etc.)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "latestRevision",
                        "percent",
                        "revisionName",
                        "tag",
                        "url"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplate:ServiceTemplate": {
            "properties": {
                "metadata": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateMetadata:ServiceTemplateMetadata",
                    "description": "Optional metadata for this Revision, including labels and annotations.\nName will be generated by the Configuration. To set minimum instances\nfor this revision, use the \"autoscaling.knative.dev/minScale\" annotation\nkey. To set maximum instances for this revision, use the\n\"autoscaling.knative.dev/maxScale\" annotation key. To set Cloud SQL\nconnections for the revision, use the \"run.googleapis.com/cloudsql-instances\"\nannotation key.\nStructure is documented below.\n"
                },
                "spec": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpec:ServiceTemplateSpec",
                    "description": "RevisionSpec holds the desired state of the Revision (from the client).\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "metadata",
                        "spec"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateMetadata:ServiceTemplateMetadata": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Annotations is a key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\n**Note**: The Cloud Run API may add additional annotations that were not provided in your config.\nIf the provider plan shows a diff where a server-side annotation is added, you can add it to your config\nor apply the lifecycle.ignore_changes rule to the metadata.0.annotations field.\nAnnotations with `run.googleapis.com/` and `autoscaling.knative.dev` are restricted. Use the following annotation\nkeys to configure features on a Service:\n- `run.googleapis.com/binary-authorization-breakglass` sets the [Binary Authorization breakglass](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--breakglass).\n- `run.googleapis.com/binary-authorization` sets the [Binary Authorization](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--binary-authorization).\n- `run.googleapis.com/client-name` sets the client name calling the Cloud Run API.\n- `run.googleapis.com/custom-audiences` sets the [custom audiences](https://cloud.google.com/sdk/gcloud/reference/alpha/run/deploy#--add-custom-audiences)\nthat can be used in the audience field of ID token for authenticated requests.\n- `run.googleapis.com/description` sets a user defined description for the Service.\n- `run.googleapis.com/ingress` sets the [ingress settings](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--ingress)\nfor the Service. For example, `\"run.googleapis.com/ingress\" = \"all\"`.\n- `run.googleapis.com/launch-stage` sets the [launch stage](https://cloud.google.com/run/docs/troubleshooting#launch-stage-validation)\nwhen a preview feature is used. For example, `\"run.googleapis.com/launch-stage\": \"BETA\"`\n- `run.googleapis.com/minScale` sets the [minimum number of container instances](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--min) of the Service.\n- `run.googleapis.com/scalingMode` sets the type of scaling mode for the service. The supported values for scaling mode are \"manual\" and \"automatic\". If not provided, it defaults to \"automatic\".\n- `run.googleapis.com/manualInstanceCount` sets the total instance count for the service in manual scaling mode. This number of instances is divided among all revisions with specified traffic based on the percent of traffic they are receiving.\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field \u003cspan pulumi-lang-nodejs=\"`effectiveAnnotations`\" pulumi-lang-dotnet=\"`EffectiveAnnotations`\" pulumi-lang-go=\"`effectiveAnnotations`\" pulumi-lang-python=\"`effective_annotations`\" pulumi-lang-yaml=\"`effectiveAnnotations`\" pulumi-lang-java=\"`effectiveAnnotations`\" pulumi-lang-hcl=\"`effective_annotations`\"\u003e`effectiveAnnotations`\u003c/span\u003e for all of the annotations present on the resource.\n"
                },
                "generation": {
                    "type": "integer",
                    "description": "(Output)\nA sequence number representing a specific generation of the desired state.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand routes.\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field \u003cspan pulumi-lang-nodejs=\"`effectiveLabels`\" pulumi-lang-dotnet=\"`EffectiveLabels`\" pulumi-lang-go=\"`effectiveLabels`\" pulumi-lang-python=\"`effective_labels`\" pulumi-lang-yaml=\"`effectiveLabels`\" pulumi-lang-java=\"`effectiveLabels`\" pulumi-lang-hcl=\"`effective_labels`\"\u003e`effectiveLabels`\u003c/span\u003e for all of the labels present on the resource.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "In Cloud Run the namespace must be equal to either the\nproject ID or project number.\n"
                },
                "resourceVersion": {
                    "type": "string",
                    "description": "(Output)\nAn opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. They may only be valid for a\nparticular resource or set of resources.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "(Output)\nSelfLink is a URL representing this object.\n"
                },
                "uid": {
                    "type": "string",
                    "description": "(Output)\nUID is a unique id generated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "annotations",
                        "generation",
                        "labels",
                        "name",
                        "namespace",
                        "resourceVersion",
                        "selfLink",
                        "uid"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpec:ServiceTemplateSpec": {
            "properties": {
                "containerConcurrency": {
                    "type": "integer",
                    "description": "ContainerConcurrency specifies the maximum allowed in-flight (concurrent)\nrequests per container of the Revision. If not specified or 0, defaults to 80 when\nrequested CPU \u003e= 1 and defaults to 1 when requested CPU \u003c 1.\n"
                },
                "containers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainer:ServiceTemplateSpecContainer"
                    },
                    "description": "Containers defines the unit of execution for this Revision.\nStructure is documented below.\n"
                },
                "nodeSelector": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Node Selector describes the hardware requirements of the resources.\nUse the following node selector keys to configure features on a Revision:\n- `run.googleapis.com/accelerator` sets the [type of GPU](https://cloud.google.com/run/docs/configuring/services/gpu) required by the Revision to run.\n"
                },
                "serviceAccountName": {
                    "type": "string",
                    "description": "Email address of the IAM service account associated with the revision of the\nservice. The service account represents the identity of the running revision,\nand determines what permissions the revision has. If not provided, the revision\nwill use the project's default service account.\n"
                },
                "servingState": {
                    "type": "string",
                    "description": "(Output, Deprecated)\nServingState holds a value describing the state the resources\nare in for this Revision.\nIt is expected\nthat the system will manipulate this based on routability and load.\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`servingState`\" pulumi-lang-dotnet=\"`ServingState`\" pulumi-lang-go=\"`servingState`\" pulumi-lang-python=\"`serving_state`\" pulumi-lang-yaml=\"`servingState`\" pulumi-lang-java=\"`servingState`\" pulumi-lang-hcl=\"`serving_state`\"\u003e`servingState`\u003c/span\u003e is deprecated and will be removed in a future major release. This field is not supported by the Cloud Run API.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`servingState`\" pulumi-lang-dotnet=\"`ServingState`\" pulumi-lang-go=\"`servingState`\" pulumi-lang-python=\"`serving_state`\" pulumi-lang-yaml=\"`servingState`\" pulumi-lang-java=\"`servingState`\" pulumi-lang-hcl=\"`serving_state`\"\u003e`servingState`\u003c/span\u003e is deprecated and will be removed in a future major release. This field is not supported by the Cloud Run API."
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "TimeoutSeconds holds the max duration the instance is allowed for responding to a request.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecVolume:ServiceTemplateSpecVolume"
                    },
                    "description": "Volume represents a named volume in a container.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "containerConcurrency",
                        "containers",
                        "serviceAccountName",
                        "servingState",
                        "timeoutSeconds"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainer:ServiceTemplateSpecContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments to the entrypoint.\nThe docker image's CMD is used if this is not provided.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Entrypoint array. Not executed within a shell.\nThe docker image's ENTRYPOINT is used if this is not provided.\n"
                },
                "envFroms": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerEnvFrom:ServiceTemplateSpecContainerEnvFrom"
                    },
                    "description": "(Optional, Deprecated)\nList of sources to populate environment variables in the container.\nAll invalid keys will be reported as an event when the container is starting.\nWhen a key exists in multiple sources, the value associated with the last source will\ntake precedence. Values defined by an Env with a duplicate key will take\nprecedence.\nStructure is documented below.\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`envFrom`\" pulumi-lang-dotnet=\"`EnvFrom`\" pulumi-lang-go=\"`envFrom`\" pulumi-lang-python=\"`env_from`\" pulumi-lang-yaml=\"`envFrom`\" pulumi-lang-java=\"`envFrom`\" pulumi-lang-hcl=\"`env_from`\"\u003e`envFrom`\u003c/span\u003e is deprecated and will be removed in a future major release. This field is not supported by the Cloud Run API.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`envFrom`\" pulumi-lang-dotnet=\"`EnvFrom`\" pulumi-lang-go=\"`envFrom`\" pulumi-lang-python=\"`env_from`\" pulumi-lang-yaml=\"`envFrom`\" pulumi-lang-java=\"`envFrom`\" pulumi-lang-hcl=\"`env_from`\"\u003e`envFrom`\u003c/span\u003e is deprecated and will be removed in a future major release. This field is not supported by the Cloud Run API.",
                    "willReplaceOnChanges": true
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerEnv:ServiceTemplateSpecContainerEnv"
                    },
                    "description": "List of environment variables to set in the container.\nStructure is documented below.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Docker image name. This is most often a reference to a container located\nin the container registry, such as gcr.io/cloudrun/hello\n"
                },
                "livenessProbe": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerLivenessProbe:ServiceTemplateSpecContainerLivenessProbe",
                    "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. More info:\nhttps://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the container\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerPort:ServiceTemplateSpecContainerPort"
                    },
                    "description": "List of open ports in the container.\nStructure is documented below.\n"
                },
                "readinessProbe": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerReadinessProbe:ServiceTemplateSpecContainerReadinessProbe",
                    "description": "Periodic probe of container readiness.\nStructure is documented below.\n"
                },
                "resources": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerResources:ServiceTemplateSpecContainerResources",
                    "description": "Compute Resources required by this container. Used to set values such as max memory\nStructure is documented below.\n"
                },
                "startupProbe": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerStartupProbe:ServiceTemplateSpecContainerStartupProbe",
                    "description": "Startup probe of application within the container.\nAll other probes are disabled if a startup probe is provided, until it\nsucceeds. Container will not be added to service endpoints if the probe fails.\nStructure is documented below.\n"
                },
                "volumeMounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerVolumeMount:ServiceTemplateSpecContainerVolumeMount"
                    },
                    "description": "Volume to mount into the container's filesystem.\nOnly supports SecretVolumeSources.\nStructure is documented below.\n"
                },
                "workingDir": {
                    "type": "string",
                    "description": "(Optional, Deprecated)\nContainer's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`workingDir`\" pulumi-lang-dotnet=\"`WorkingDir`\" pulumi-lang-go=\"`workingDir`\" pulumi-lang-python=\"`working_dir`\" pulumi-lang-yaml=\"`workingDir`\" pulumi-lang-java=\"`workingDir`\" pulumi-lang-hcl=\"`working_dir`\"\u003e`workingDir`\u003c/span\u003e is deprecated and will be removed in a future major release. This field is not supported by the Cloud Run API.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`workingDir`\" pulumi-lang-dotnet=\"`WorkingDir`\" pulumi-lang-go=\"`workingDir`\" pulumi-lang-python=\"`working_dir`\" pulumi-lang-yaml=\"`workingDir`\" pulumi-lang-java=\"`workingDir`\" pulumi-lang-hcl=\"`working_dir`\"\u003e`workingDir`\u003c/span\u003e is deprecated and will be removed in a future major release. This field is not supported by the Cloud Run API.",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "image"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "image",
                        "name",
                        "ports",
                        "resources",
                        "startupProbe"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerEnv:ServiceTemplateSpecContainerEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the environment variable.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Defaults to \"\".\n"
                },
                "valueFrom": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerEnvValueFrom:ServiceTemplateSpecContainerEnvValueFrom",
                    "description": "Source for the environment variable's value. Only supports secret_key_ref.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerEnvFrom:ServiceTemplateSpecContainerEnvFrom": {
            "properties": {
                "configMapRef": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerEnvFromConfigMapRef:ServiceTemplateSpecContainerEnvFromConfigMapRef",
                    "description": "The ConfigMap to select from.\nStructure is documented below.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "An optional identifier to prepend to each key in the ConfigMap.\n"
                },
                "secretRef": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerEnvFromSecretRef:ServiceTemplateSpecContainerEnvFromSecretRef",
                    "description": "The Secret to select from.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerEnvFromConfigMapRef:ServiceTemplateSpecContainerEnvFromConfigMapRef": {
            "properties": {
                "localObjectReference": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerEnvFromConfigMapRefLocalObjectReference:ServiceTemplateSpecContainerEnvFromConfigMapRefLocalObjectReference",
                    "description": "The ConfigMap to select from.\nStructure is documented below.\n"
                },
                "optional": {
                    "type": "boolean",
                    "description": "Specify whether the ConfigMap must be defined\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerEnvFromConfigMapRefLocalObjectReference:ServiceTemplateSpecContainerEnvFromConfigMapRefLocalObjectReference": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the referent.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerEnvFromSecretRef:ServiceTemplateSpecContainerEnvFromSecretRef": {
            "properties": {
                "localObjectReference": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerEnvFromSecretRefLocalObjectReference:ServiceTemplateSpecContainerEnvFromSecretRefLocalObjectReference",
                    "description": "The Secret to select from.\nStructure is documented below.\n"
                },
                "optional": {
                    "type": "boolean",
                    "description": "Specify whether the Secret must be defined\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerEnvFromSecretRefLocalObjectReference:ServiceTemplateSpecContainerEnvFromSecretRefLocalObjectReference": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the referent.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerEnvValueFrom:ServiceTemplateSpecContainerEnvValueFrom": {
            "properties": {
                "secretKeyRef": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerEnvValueFromSecretKeyRef:ServiceTemplateSpecContainerEnvValueFromSecretKeyRef",
                    "description": "Selects a key (version) of a secret in Secret Manager.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "secretKeyRef"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerEnvValueFromSecretKeyRef:ServiceTemplateSpecContainerEnvValueFromSecretKeyRef": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "A Cloud Secret Manager secret version. Must be 'latest' for the latest\nversion or an integer for a specific version.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project.\nIf the secret is in another project, you must define an alias.\nAn alias definition has the form:\n{alias}:projects/{project-id|project-number}/secrets/{secret-name}.\nIf multiple alias definitions are needed, they must be separated by commas.\nThe alias definitions must be set on the run.googleapis.com/secrets annotation.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "name"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerLivenessProbe:ServiceTemplateSpecContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerLivenessProbeGrpc:ServiceTemplateSpecContainerLivenessProbeGrpc",
                    "description": "GRPC specifies an action involving a GRPC port.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerLivenessProbeHttpGet:ServiceTemplateSpecContainerLivenessProbeHttpGet",
                    "description": "HttpGet specifies the http request to perform.\nStructure is documented below.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is\ninitiated.\nDefaults to 0 seconds. Minimum value is 0. Maximum value is 3600.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1. Maximum value is 3600.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1. Maximum value is 3600.\nMust be smaller than period_seconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerLivenessProbeGrpc:ServiceTemplateSpecContainerLivenessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerLivenessProbeHttpGet:ServiceTemplateSpecContainerLivenessProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerLivenessProbeHttpGetHttpHeader:ServiceTemplateSpecContainerLivenessProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\nStructure is documented below.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerLivenessProbeHttpGetHttpHeader:ServiceTemplateSpecContainerLivenessProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The header field name.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerPort:ServiceTemplateSpecContainerPort": {
            "properties": {
                "containerPort": {
                    "type": "integer",
                    "description": "Port number the container listens on. This must be a valid port number (between 1 and 65535). Defaults to \"8080\".\n"
                },
                "name": {
                    "type": "string",
                    "description": "If specified, used to specify which protocol to use. Allowed values are \"http1\" (HTTP/1) and \"h2c\" (HTTP/2 end-to-end). Defaults to \"http1\".\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol for port. Must be \"TCP\". Defaults to \"TCP\".\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerReadinessProbe:ServiceTemplateSpecContainerReadinessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerReadinessProbeGrpc:ServiceTemplateSpecContainerReadinessProbeGrpc",
                    "description": "GRPC specifies an action involving a GRPC port.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerReadinessProbeHttpGet:ServiceTemplateSpecContainerReadinessProbeHttpGet",
                    "description": "HttpGet specifies the http request to perform.\nStructure is documented below.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds.\n"
                },
                "successThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 2.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Must be smaller than period_seconds.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "failureThreshold",
                        "periodSeconds",
                        "successThreshold",
                        "timeoutSeconds"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerReadinessProbeGrpc:ServiceTemplateSpecContainerReadinessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerReadinessProbeHttpGet:ServiceTemplateSpecContainerReadinessProbeHttpGet": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "path",
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerResources:ServiceTemplateSpecContainerResources": {
            "properties": {
                "limits": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Limits describes the maximum amount of compute resources allowed.\nCPU Limit details:\n- For fractional CPU values (e.g. `0.5`, `0.75`, min `0.08`) are also supported.\n- CPU allocation must comply with memory limits and concurrency rules described in:\nhttps://cloud.google.com/run/docs/configuring/services/cpu\nThe values of the map is string form of the 'quantity' k8s type:\nhttps://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                },
                "requests": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is\nexplicitly specified, otherwise to an implementation-defined value.\nThe values of the map is string form of the 'quantity' k8s type:\nhttps://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "limits"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerStartupProbe:ServiceTemplateSpecContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerStartupProbeGrpc:ServiceTemplateSpecContainerStartupProbeGrpc",
                    "description": "GRPC specifies an action involving a GRPC port.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerStartupProbeHttpGet:ServiceTemplateSpecContainerStartupProbeHttpGet",
                    "description": "HttpGet specifies the http request to perform.\nStructure is documented below.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is\ninitiated.\nDefaults to 0 seconds. Minimum value is 0. Maximum value is 240.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1. Maximum value is 240.\n"
                },
                "tcpSocket": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerStartupProbeTcpSocket:ServiceTemplateSpecContainerStartupProbeTcpSocket",
                    "description": "TcpSocket specifies an action involving a TCP port.\nStructure is documented below.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1. Maximum value is 3600.\nMust be smaller than periodSeconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerStartupProbeGrpc:ServiceTemplateSpecContainerStartupProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerStartupProbeHttpGet:ServiceTemplateSpecContainerStartupProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecContainerStartupProbeHttpGetHttpHeader:ServiceTemplateSpecContainerStartupProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\nStructure is documented below.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerStartupProbeHttpGetHttpHeader:ServiceTemplateSpecContainerStartupProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The header field name.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerStartupProbeTcpSocket:ServiceTemplateSpecContainerStartupProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecContainerVolumeMount:ServiceTemplateSpecContainerVolumeMount": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "Path within the container at which the volume should be mounted.  Must\nnot contain ':'.\n"
                },
                "name": {
                    "type": "string",
                    "description": "This must match the Name of a Volume.\n"
                },
                "subPath": {
                    "type": "string",
                    "description": "Path within the volume from which the container's volume should be mounted.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "name"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecVolume:ServiceTemplateSpecVolume": {
            "properties": {
                "csi": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecVolumeCsi:ServiceTemplateSpecVolumeCsi",
                    "description": "A filesystem specified by the Container Storage Interface (CSI).\nStructure is documented below.\n"
                },
                "emptyDir": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecVolumeEmptyDir:ServiceTemplateSpecVolumeEmptyDir",
                    "description": "Ephemeral storage which can be backed by real disks (HD, SSD), network storage or memory (i.e. tmpfs). For now only in memory (tmpfs) is supported. It is ephemeral in the sense that when the sandbox is taken down, the data is destroyed with it (it does not persist across sandbox runs).\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Volume's name.\n"
                },
                "nfs": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecVolumeNfs:ServiceTemplateSpecVolumeNfs",
                    "description": "A filesystem backed by a Network File System share. This filesystem requires the\nrun.googleapis.com/execution-environment annotation to be unset or set to \"gen2\"\nStructure is documented below.\n"
                },
                "secret": {
                    "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecVolumeSecret:ServiceTemplateSpecVolumeSecret",
                    "description": "The secret's value will be presented as the content of a file whose\nname is defined in the item path. If no items are defined, the name of\nthe file is the secret_name.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecVolumeCsi:ServiceTemplateSpecVolumeCsi": {
            "properties": {
                "driver": {
                    "type": "string",
                    "description": "Unique name representing the type of file system to be created. Cloud Run supports the following values:\n* gcsfuse.run.googleapis.com: Mount a Google Cloud Storage bucket using GCSFuse. This driver requires the\nrun.googleapis.com/execution-environment annotation to be unset or set to \"gen2\"\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, all mounts created from this volume will be read-only.\n"
                },
                "volumeAttributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Driver-specific attributes. The following options are supported for available drivers:\n* gcsfuse.run.googleapis.com\n* bucketName: The name of the Cloud Storage Bucket that backs this volume. The Cloud Run Service identity must have access to this bucket.\n"
                }
            },
            "type": "object",
            "required": [
                "driver"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "driver",
                        "readOnly"
                    ]
                }
            }
        },
        "gcp:cloudrun/ServiceTemplateSpecVolumeEmptyDir:ServiceTemplateSpecVolumeEmptyDir": {
            "properties": {
                "medium": {
                    "type": "string",
                    "description": "The medium on which the data is stored. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory.\n"
                },
                "sizeLimit": {
                    "type": "string",
                    "description": "Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. This field's values are of the 'Quantity' k8s type: https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrun/ServiceTemplateSpecVolumeNfs:ServiceTemplateSpecVolumeNfs": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path exported by the NFS server\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the NFS volume as read only in all mounts. Defaults to false.\n"
                },
                "server": {
                    "type": "string",
                    "description": "IP address or hostname of the NFS server\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "server"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecVolumeSecret:ServiceTemplateSpecVolumeSecret": {
            "properties": {
                "defaultMode": {
                    "type": "integer",
                    "description": "Mode bits to use on created files by default. Must be a value between 0000\nand 0777. Defaults to 0644. Directories within the path are not affected by\nthis setting. This might be in conflict with other options that affect the\nfile mode, like fsGroup, and the result can be other mode bits set.\n"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/ServiceTemplateSpecVolumeSecretItem:ServiceTemplateSpecVolumeSecretItem"
                    },
                    "description": "If unspecified, the volume will expose a file whose name is the\nsecret_name.\nIf specified, the key will be used as the version to fetch from Cloud\nSecret Manager and the path will be the name of the file exposed in the\nvolume. When items are defined, they must specify a key and a path.\nStructure is documented below.\n"
                },
                "secretName": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. By default, the secret\nis assumed to be in the same project.\nIf the secret is in another project, you must define an alias.\nAn alias definition has the form:\n{alias}:projects/{project-id|project-number}/secrets/{secret-name}.\nIf multiple alias definitions are needed, they must be separated by\ncommas.\nThe alias definitions must be set on the run.googleapis.com/secrets\nannotation.\n"
                }
            },
            "type": "object",
            "required": [
                "secretName"
            ]
        },
        "gcp:cloudrun/ServiceTemplateSpecVolumeSecretItem:ServiceTemplateSpecVolumeSecretItem": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version.\nCan be 'latest' for the latest value or an integer for a specific version.\n"
                },
                "mode": {
                    "type": "integer",
                    "description": "Mode bits to use on this file, must be a value between 0000 and 0777. If\nnot specified, the volume defaultMode will be used. This might be in\nconflict with other options that affect the file mode, like fsGroup, and\nthe result can be other mode bits set.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "path"
            ]
        },
        "gcp:cloudrun/ServiceTraffic:ServiceTraffic": {
            "properties": {
                "latestRevision": {
                    "type": "boolean",
                    "description": "LatestRevision may be optionally provided to indicate that the latest ready\nRevision of the Configuration should be used for this traffic target. When\nprovided LatestRevision must be true if RevisionName is empty; it must be\nfalse when RevisionName is non-empty.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "Percent specifies percent of the traffic to this Revision or Configuration.\n"
                },
                "revisionName": {
                    "type": "string",
                    "description": "RevisionName of a specific revision to which to send this portion of traffic.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Tag is optionally used to expose a dedicated url for referencing this target exclusively.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nURL displays the URL for accessing tagged traffic targets. URL is displayed in status,\nand is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname,\nbut may not contain anything else (e.g. basic auth, url path, etc.)\n"
                }
            },
            "type": "object",
            "required": [
                "percent"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "percent",
                        "url"
                    ]
                }
            }
        },
        "gcp:cloudrun/getServiceMetadata:getServiceMetadata": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Annotations is a key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\n\n**Note**: The Cloud Run API may add additional annotations that were not provided in your config.\nIf terraform plan shows a diff where a server-side annotation is added, you can add it to your config\nor apply the lifecycle.ignore_changes rule to the metadata.0.annotations field.\n\nAnnotations with 'run.googleapis.com/' and 'autoscaling.knative.dev' are restricted. Use the following annotation\nkeys to configure features on a Service:\n\n- 'run.googleapis.com/binary-authorization-breakglass' sets the [Binary Authorization breakglass](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--breakglass).\n- 'run.googleapis.com/binary-authorization' sets the [Binary Authorization](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--binary-authorization).\n- 'run.googleapis.com/client-name' sets the client name calling the Cloud Run API.\n- 'run.googleapis.com/custom-audiences' sets the [custom audiences](https://cloud.google.com/sdk/gcloud/reference/alpha/run/deploy#--add-custom-audiences)\n  that can be used in the audience field of ID token for authenticated requests.\n- 'run.googleapis.com/description' sets a user defined description for the Service.\n- 'run.googleapis.com/ingress' sets the [ingress settings](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--ingress)\n  for the Service. For example, '\"run.googleapis.com/ingress\" = \"all\"'.\n- 'run.googleapis.com/launch-stage' sets the [launch stage](https://cloud.google.com/run/docs/troubleshooting#launch-stage-validation)\n  when a preview feature is used. For example, '\"run.googleapis.com/launch-stage\": \"BETA\"'\n- 'run.googleapis.com/minScale' sets the [minimum number of container instances](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--min) of the Service.\n- 'run.googleapis.com/scalingMode' sets the type of scaling mode for the service. The supported values for scaling mode are \"manual\" and \"automatic\". If not provided, it defaults to \"automatic\".\n- 'run.googleapis.com/manualInstanceCount' sets the total instance count for the service in manual scaling mode. This number of instances is divided among all revisions with specified traffic based on the percent of traffic they are receiving.\n\n**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.\nPlease refer to the field 'effective_annotations' for all of the annotations present on the resource.\n"
                },
                "effectiveAnnotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services.\n"
                },
                "effectiveLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.\n",
                    "secret": true
                },
                "generation": {
                    "type": "integer",
                    "description": "A sequence number representing a specific generation of the desired state.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand routes.\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "In Cloud Run the namespace must be equal to either the\nproject ID or project number.\n"
                },
                "pulumiLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.\n",
                    "secret": true
                },
                "resourceVersion": {
                    "type": "string",
                    "description": "An opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. They may only be valid for a\nparticular resource or set of resources.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "SelfLink is a URL representing this object.\n"
                },
                "uid": {
                    "type": "string",
                    "description": "UID is a unique id generated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n"
                }
            },
            "type": "object",
            "required": [
                "annotations",
                "effectiveAnnotations",
                "effectiveLabels",
                "generation",
                "labels",
                "namespace",
                "resourceVersion",
                "selfLink",
                "pulumiLabels",
                "uid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceStatus:getServiceStatus": {
            "properties": {
                "conditions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceStatusCondition:getServiceStatusCondition"
                    },
                    "description": "Array of observed Service Conditions, indicating the current ready state of the service.\n"
                },
                "latestCreatedRevisionName": {
                    "type": "string",
                    "description": "From ConfigurationStatus. LatestCreatedRevisionName is the last revision that was created\nfrom this Service's Configuration. It might not be ready yet, for that use\nLatestReadyRevisionName.\n"
                },
                "latestReadyRevisionName": {
                    "type": "string",
                    "description": "From ConfigurationStatus. LatestReadyRevisionName holds the name of the latest Revision\nstamped out from this Service's Configuration that has had its \"Ready\" condition become\n\"True\".\n"
                },
                "observedGeneration": {
                    "type": "integer",
                    "description": "ObservedGeneration is the 'Generation' of the Route that was last processed by the\ncontroller.\n\nClients polling for completed reconciliation should poll until observedGeneration =\nmetadata.generation and the Ready condition's status is True or False.\n"
                },
                "traffics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceStatusTraffic:getServiceStatusTraffic"
                    },
                    "description": "Traffic specifies how to distribute traffic over a collection of Knative Revisions\nand Configurations\n"
                },
                "url": {
                    "type": "string",
                    "description": "From RouteStatus. URL holds the url that will distribute traffic over the provided traffic\ntargets. It generally has the form\nhttps://{route-hash}-{project-hash}-{cluster-level-suffix}.a.run.app\n"
                }
            },
            "type": "object",
            "required": [
                "conditions",
                "latestCreatedRevisionName",
                "latestReadyRevisionName",
                "observedGeneration",
                "traffics",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceStatusCondition:getServiceStatusCondition": {
            "properties": {
                "message": {
                    "type": "string",
                    "description": "Human readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "One-word CamelCase reason for the condition's current status.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the condition, one of True, False, Unknown.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of domain mapping condition.\n"
                }
            },
            "type": "object",
            "required": [
                "message",
                "reason",
                "status",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceStatusTraffic:getServiceStatusTraffic": {
            "properties": {
                "latestRevision": {
                    "type": "boolean",
                    "description": "LatestRevision may be optionally provided to indicate that the latest ready\nRevision of the Configuration should be used for this traffic target. When\nprovided LatestRevision must be true if RevisionName is empty; it must be\nfalse when RevisionName is non-empty.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "Percent specifies percent of the traffic to this Revision or Configuration.\n"
                },
                "revisionName": {
                    "type": "string",
                    "description": "RevisionName of a specific revision to which to send this portion of traffic.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Tag is optionally used to expose a dedicated url for referencing this target exclusively.\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL displays the URL for accessing tagged traffic targets. URL is displayed in status,\nand is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname,\nbut may not contain anything else (e.g. basic auth, url path, etc.)\n"
                }
            },
            "type": "object",
            "required": [
                "latestRevision",
                "percent",
                "revisionName",
                "tag",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplate:getServiceTemplate": {
            "properties": {
                "metadatas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateMetadata:getServiceTemplateMetadata"
                    },
                    "description": "Optional metadata for this Revision, including labels and annotations.\nName will be generated by the Configuration. To set minimum instances\nfor this revision, use the \"autoscaling.knative.dev/minScale\" annotation\nkey. To set maximum instances for this revision, use the\n\"autoscaling.knative.dev/maxScale\" annotation key. To set Cloud SQL\nconnections for the revision, use the \"run.googleapis.com/cloudsql-instances\"\nannotation key.\n"
                },
                "specs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpec:getServiceTemplateSpec"
                    },
                    "description": "RevisionSpec holds the desired state of the Revision (from the client).\n"
                }
            },
            "type": "object",
            "required": [
                "metadatas",
                "specs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateMetadata:getServiceTemplateMetadata": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Annotations is a key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations\n\n**Note**: The Cloud Run API may add additional annotations that were not provided in your config.\nIf terraform plan shows a diff where a server-side annotation is added, you can add it to your config\nor apply the lifecycle.ignore_changes rule to the metadata.0.annotations field.\n\nAnnotations with 'run.googleapis.com/' and 'autoscaling.knative.dev' are restricted. Use the following annotation\nkeys to configure features on a Revision template:\n\n- 'autoscaling.knative.dev/maxScale' sets the [maximum number of container\n  instances](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--max-instances) of the Revision to run.\n- 'autoscaling.knative.dev/minScale' sets the [minimum number of container\n  instances](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--min-instances) of the Revision to run.\n- 'run.googleapis.com/client-name' sets the client name calling the Cloud Run API.\n- 'run.googleapis.com/cloudsql-instances' sets the [Cloud SQL\n  instances](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--add-cloudsql-instances) the Revision connects to.\n- 'run.googleapis.com/cpu-throttling' sets whether to throttle the CPU when the container is not actively serving\n  requests. See https://cloud.google.com/sdk/gcloud/reference/run/deploy#--[no-]cpu-throttling.\n- 'run.googleapis.com/encryption-key-shutdown-hours' sets the number of hours to wait before an automatic shutdown\n  server after CMEK key revocation is detected.\n- 'run.googleapis.com/encryption-key' sets the [CMEK key](https://cloud.google.com/run/docs/securing/using-cmek)\n  reference to encrypt the container with.\n- 'run.googleapis.com/execution-environment' sets the [execution\n  environment](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--execution-environment)\n  where the application will run.\n- 'run.googleapis.com/post-key-revocation-action-type' sets the\n  [action type](https://cloud.google.com/sdk/gcloud/reference/run/deploy#--post-key-revocation-action-type)\n  after CMEK key revocation.\n- 'run.googleapis.com/secrets' sets a list of key-value pairs to set as\n  [secrets](https://cloud.google.com/run/docs/configuring/secrets#yaml).\n- 'run.googleapis.com/sessionAffinity' sets whether to enable\n  [session affinity](https://cloud.google.com/sdk/gcloud/reference/beta/run/deploy#--[no-]session-affinity)\n  for connections to the Revision.\n- 'run.googleapis.com/startup-cpu-boost' sets whether to allocate extra CPU to containers on startup.\n  See https://cloud.google.com/sdk/gcloud/reference/run/deploy#--[no-]cpu-boost.\n- 'run.googleapis.com/network-interfaces' sets [Direct VPC egress](https://cloud.google.com/run/docs/configuring/vpc-direct-vpc#yaml)\n  for the Revision.\n- 'run.googleapis.com/vpc-access-connector' sets a [VPC connector](https://cloud.google.com/run/docs/configuring/connecting-vpc#terraform_1)\n  for the Revision.\n- 'run.googleapis.com/vpc-access-egress' sets the outbound traffic to send through the VPC connector for this resource.\n  See https://cloud.google.com/sdk/gcloud/reference/run/deploy#--vpc-egress.\n- 'run.googleapis.com/gpu-zonal-redundancy-disabled' sets\n  [GPU zonal redundancy](https://cloud.google.com/run/docs/configuring/services/gpu-zonal-redundancy) for the Revision.\n- 'run.googleapis.com/health-check-disabled' disabled health checking containers during deployment.\n"
                },
                "generation": {
                    "type": "integer",
                    "description": "A sequence number representing a specific generation of the desired state.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "In Cloud Run the namespace must be equal to either the\nproject ID or project number. It will default to the resource's project.\n"
                },
                "resourceVersion": {
                    "type": "string",
                    "description": "An opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. They may only be valid for a\nparticular resource or set of resources.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "SelfLink is a URL representing this object.\n"
                },
                "uid": {
                    "type": "string",
                    "description": "UID is a unique id generated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n"
                }
            },
            "type": "object",
            "required": [
                "annotations",
                "generation",
                "labels",
                "name",
                "namespace",
                "resourceVersion",
                "selfLink",
                "uid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpec:getServiceTemplateSpec": {
            "properties": {
                "containerConcurrency": {
                    "type": "integer",
                    "description": "ContainerConcurrency specifies the maximum allowed in-flight (concurrent)\nrequests per container of the Revision. If not specified or 0, defaults to 80 when\nrequested CPU \u003e= 1 and defaults to 1 when requested CPU \u003c 1.\n"
                },
                "containers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainer:getServiceTemplateSpecContainer"
                    },
                    "description": "Containers defines the unit of execution for this Revision.\n"
                },
                "nodeSelector": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Node Selector describes the hardware requirements of the resources.\nUse the following node selector keys to configure features on a Revision:\n  - 'run.googleapis.com/accelerator' sets the [type of GPU](https://cloud.google.com/run/docs/configuring/services/gpu) required by the Revision to run.\n"
                },
                "serviceAccountName": {
                    "type": "string",
                    "description": "Email address of the IAM service account associated with the revision of the\nservice. The service account represents the identity of the running revision,\nand determines what permissions the revision has. If not provided, the revision\nwill use the project's default service account.\n"
                },
                "servingState": {
                    "type": "string",
                    "description": "ServingState holds a value describing the state the resources\nare in for this Revision.\nIt is expected\nthat the system will manipulate this based on routability and load.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "TimeoutSeconds holds the max duration the instance is allowed for responding to a request.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecVolume:getServiceTemplateSpecVolume"
                    },
                    "description": "Volume represents a named volume in a container.\n"
                }
            },
            "type": "object",
            "required": [
                "containerConcurrency",
                "containers",
                "nodeSelector",
                "serviceAccountName",
                "servingState",
                "timeoutSeconds",
                "volumes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainer:getServiceTemplateSpecContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments to the entrypoint.\nThe docker image's CMD is used if this is not provided.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Entrypoint array. Not executed within a shell.\nThe docker image's ENTRYPOINT is used if this is not provided.\n"
                },
                "envFroms": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerEnvFrom:getServiceTemplateSpecContainerEnvFrom"
                    },
                    "description": "List of sources to populate environment variables in the container.\nAll invalid keys will be reported as an event when the container is starting.\nWhen a key exists in multiple sources, the value associated with the last source will\ntake precedence. Values defined by an Env with a duplicate key will take\nprecedence.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerEnv:getServiceTemplateSpecContainerEnv"
                    },
                    "description": "List of environment variables to set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "Docker image name. This is most often a reference to a container located\nin the container registry, such as gcr.io/cloudrun/hello\n"
                },
                "livenessProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerLivenessProbe:getServiceTemplateSpecContainerLivenessProbe"
                    },
                    "description": "Periodic probe of container liveness. Container will be restarted if the probe fails.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerPort:getServiceTemplateSpecContainerPort"
                    },
                    "description": "List of open ports in the container.\n"
                },
                "readinessProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerReadinessProbe:getServiceTemplateSpecContainerReadinessProbe"
                    },
                    "description": "Periodic probe of container readiness.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerResource:getServiceTemplateSpecContainerResource"
                    },
                    "description": "Compute Resources required by this container. Used to set values such as max memory\n"
                },
                "startupProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerStartupProbe:getServiceTemplateSpecContainerStartupProbe"
                    },
                    "description": "Startup probe of application within the container.\nAll other probes are disabled if a startup probe is provided, until it\nsucceeds. Container will not be added to service endpoints if the probe fails.\n"
                },
                "volumeMounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerVolumeMount:getServiceTemplateSpecContainerVolumeMount"
                    },
                    "description": "Volume to mount into the container's filesystem.\nOnly supports SecretVolumeSources.\n"
                },
                "workingDir": {
                    "type": "string",
                    "description": "Container's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.\n"
                }
            },
            "type": "object",
            "required": [
                "args",
                "commands",
                "envs",
                "envFroms",
                "image",
                "livenessProbes",
                "name",
                "ports",
                "readinessProbes",
                "resources",
                "startupProbes",
                "volumeMounts",
                "workingDir"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerEnv:getServiceTemplateSpecContainerEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                },
                "value": {
                    "type": "string",
                    "description": "Defaults to \"\".\n"
                },
                "valueFroms": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerEnvValueFrom:getServiceTemplateSpecContainerEnvValueFrom"
                    },
                    "description": "Source for the environment variable's value. Only supports secret_key_ref.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value",
                "valueFroms"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerEnvFrom:getServiceTemplateSpecContainerEnvFrom": {
            "properties": {
                "configMapReves": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerEnvFromConfigMapRef:getServiceTemplateSpecContainerEnvFromConfigMapRef"
                    },
                    "description": "The ConfigMap to select from.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "An optional identifier to prepend to each key in the ConfigMap.\n"
                },
                "secretReves": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerEnvFromSecretRef:getServiceTemplateSpecContainerEnvFromSecretRef"
                    },
                    "description": "The Secret to select from.\n"
                }
            },
            "type": "object",
            "required": [
                "configMapReves",
                "prefix",
                "secretReves"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerEnvFromConfigMapRef:getServiceTemplateSpecContainerEnvFromConfigMapRef": {
            "properties": {
                "localObjectReferences": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerEnvFromConfigMapRefLocalObjectReference:getServiceTemplateSpecContainerEnvFromConfigMapRefLocalObjectReference"
                    },
                    "description": "The ConfigMap to select from.\n"
                },
                "optional": {
                    "type": "boolean",
                    "description": "Specify whether the ConfigMap must be defined\n"
                }
            },
            "type": "object",
            "required": [
                "localObjectReferences",
                "optional"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerEnvFromConfigMapRefLocalObjectReference:getServiceTemplateSpecContainerEnvFromConfigMapRefLocalObjectReference": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerEnvFromSecretRef:getServiceTemplateSpecContainerEnvFromSecretRef": {
            "properties": {
                "localObjectReferences": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerEnvFromSecretRefLocalObjectReference:getServiceTemplateSpecContainerEnvFromSecretRefLocalObjectReference"
                    },
                    "description": "The Secret to select from.\n"
                },
                "optional": {
                    "type": "boolean",
                    "description": "Specify whether the Secret must be defined\n"
                }
            },
            "type": "object",
            "required": [
                "localObjectReferences",
                "optional"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerEnvFromSecretRefLocalObjectReference:getServiceTemplateSpecContainerEnvFromSecretRefLocalObjectReference": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerEnvValueFrom:getServiceTemplateSpecContainerEnvValueFrom": {
            "properties": {
                "secretKeyReves": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerEnvValueFromSecretKeyRef:getServiceTemplateSpecContainerEnvValueFromSecretKeyRef"
                    },
                    "description": "Selects a key (version) of a secret in Secret Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "secretKeyReves"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerEnvValueFromSecretKeyRef:getServiceTemplateSpecContainerEnvValueFromSecretKeyRef": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "A Cloud Secret Manager secret version. Must be 'latest' for the latest\nversion or an integer for a specific version.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerLivenessProbe:getServiceTemplateSpecContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerLivenessProbeGrpc:getServiceTemplateSpecContainerLivenessProbeGrpc"
                    },
                    "description": "GRPC specifies an action involving a GRPC port.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerLivenessProbeHttpGet:getServiceTemplateSpecContainerLivenessProbeHttpGet"
                    },
                    "description": "HttpGet specifies the http request to perform.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is\ninitiated.\nDefaults to 0 seconds. Minimum value is 0. Maximum value is 3600.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1. Maximum value is 3600.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1. Maximum value is 3600.\nMust be smaller than period_seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "initialDelaySeconds",
                "periodSeconds",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerLivenessProbeGrpc:getServiceTemplateSpecContainerLivenessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerLivenessProbeHttpGet:getServiceTemplateSpecContainerLivenessProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerLivenessProbeHttpGetHttpHeader:getServiceTemplateSpecContainerLivenessProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "httpHeaders",
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerLivenessProbeHttpGetHttpHeader:getServiceTemplateSpecContainerLivenessProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerPort:getServiceTemplateSpecContainerPort": {
            "properties": {
                "containerPort": {
                    "type": "integer",
                    "description": "Port number the container listens on. This must be a valid port number (between 1 and 65535). Defaults to \"8080\".\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "Protocol for port. Must be \"TCP\". Defaults to \"TCP\".\n"
                }
            },
            "type": "object",
            "required": [
                "containerPort",
                "name",
                "protocol"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerReadinessProbe:getServiceTemplateSpecContainerReadinessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerReadinessProbeGrpc:getServiceTemplateSpecContainerReadinessProbeGrpc"
                    },
                    "description": "GRPC specifies an action involving a GRPC port.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerReadinessProbeHttpGet:getServiceTemplateSpecContainerReadinessProbeHttpGet"
                    },
                    "description": "HttpGet specifies the http request to perform.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds.\n"
                },
                "successThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 2.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Must be smaller than period_seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "periodSeconds",
                "successThreshold",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerReadinessProbeGrpc:getServiceTemplateSpecContainerReadinessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerReadinessProbeHttpGet:getServiceTemplateSpecContainerReadinessProbeHttpGet": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerResource:getServiceTemplateSpecContainerResource": {
            "properties": {
                "limits": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Limits describes the maximum amount of compute resources allowed.\nCPU Limit details:\n- For fractional CPU values (e.g. '0.5', '0.75', min '0.08') are also supported.\n- CPU allocation must comply with memory limits and concurrency rules described in:\n  https://cloud.google.com/run/docs/configuring/services/cpu\nThe values of the map is string form of the 'quantity' k8s type:\nhttps://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                },
                "requests": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is\nexplicitly specified, otherwise to an implementation-defined value.\nThe values of the map is string form of the 'quantity' k8s type:\nhttps://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                }
            },
            "type": "object",
            "required": [
                "limits",
                "requests"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerStartupProbe:getServiceTemplateSpecContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerStartupProbeGrpc:getServiceTemplateSpecContainerStartupProbeGrpc"
                    },
                    "description": "GRPC specifies an action involving a GRPC port.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerStartupProbeHttpGet:getServiceTemplateSpecContainerStartupProbeHttpGet"
                    },
                    "description": "HttpGet specifies the http request to perform.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is\ninitiated.\nDefaults to 0 seconds. Minimum value is 0. Maximum value is 240.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1. Maximum value is 240.\n"
                },
                "tcpSockets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerStartupProbeTcpSocket:getServiceTemplateSpecContainerStartupProbeTcpSocket"
                    },
                    "description": "TcpSocket specifies an action involving a TCP port.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1. Maximum value is 3600.\nMust be smaller than periodSeconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "initialDelaySeconds",
                "periodSeconds",
                "tcpSockets",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerStartupProbeGrpc:getServiceTemplateSpecContainerStartupProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerStartupProbeHttpGet:getServiceTemplateSpecContainerStartupProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecContainerStartupProbeHttpGetHttpHeader:getServiceTemplateSpecContainerStartupProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "httpHeaders",
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerStartupProbeHttpGetHttpHeader:getServiceTemplateSpecContainerStartupProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerStartupProbeTcpSocket:getServiceTemplateSpecContainerStartupProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecContainerVolumeMount:getServiceTemplateSpecContainerVolumeMount": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "Path within the container at which the volume should be mounted.  Must\nnot contain ':'.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                },
                "subPath": {
                    "type": "string",
                    "description": "Path within the volume from which the container's volume should be mounted.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "name",
                "subPath"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecVolume:getServiceTemplateSpecVolume": {
            "properties": {
                "csis": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecVolumeCsi:getServiceTemplateSpecVolumeCsi"
                    },
                    "description": "A filesystem specified by the Container Storage Interface (CSI).\n"
                },
                "emptyDirs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecVolumeEmptyDir:getServiceTemplateSpecVolumeEmptyDir"
                    },
                    "description": "Ephemeral storage which can be backed by real disks (HD, SSD), network storage or memory (i.e. tmpfs). For now only in memory (tmpfs) is supported. It is ephemeral in the sense that when the sandbox is taken down, the data is destroyed with it (it does not persist across sandbox runs).\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name must be unique within a Google Cloud project and region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\n"
                },
                "nfs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecVolumeNf:getServiceTemplateSpecVolumeNf"
                    },
                    "description": "A filesystem backed by a Network File System share. This filesystem requires the\nrun.googleapis.com/execution-environment annotation to be unset or set to \"gen2\"\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecVolumeSecret:getServiceTemplateSpecVolumeSecret"
                    },
                    "description": "The secret's value will be presented as the content of a file whose\nname is defined in the item path. If no items are defined, the name of\nthe file is the secret_name.\n"
                }
            },
            "type": "object",
            "required": [
                "csis",
                "emptyDirs",
                "name",
                "nfs",
                "secrets"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecVolumeCsi:getServiceTemplateSpecVolumeCsi": {
            "properties": {
                "driver": {
                    "type": "string",
                    "description": "Unique name representing the type of file system to be created. Cloud Run supports the following values:\n  * gcsfuse.run.googleapis.com: Mount a Google Cloud Storage bucket using GCSFuse. This driver requires the\n    run.googleapis.com/execution-environment annotation to be unset or set to \"gen2\"\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, all mounts created from this volume will be read-only.\n"
                },
                "volumeAttributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Driver-specific attributes. The following options are supported for available drivers:\n  * gcsfuse.run.googleapis.com\n    * bucketName: The name of the Cloud Storage Bucket that backs this volume. The Cloud Run Service identity must have access to this bucket.\n"
                }
            },
            "type": "object",
            "required": [
                "driver",
                "readOnly",
                "volumeAttributes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecVolumeEmptyDir:getServiceTemplateSpecVolumeEmptyDir": {
            "properties": {
                "medium": {
                    "type": "string",
                    "description": "The medium on which the data is stored. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory.\n"
                },
                "sizeLimit": {
                    "type": "string",
                    "description": "Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. This field's values are of the 'Quantity' k8s type: https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir.\n"
                }
            },
            "type": "object",
            "required": [
                "medium",
                "sizeLimit"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecVolumeNf:getServiceTemplateSpecVolumeNf": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path exported by the NFS server\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the NFS volume as read only in all mounts. Defaults to false.\n"
                },
                "server": {
                    "type": "string",
                    "description": "IP address or hostname of the NFS server\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "readOnly",
                "server"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecVolumeSecret:getServiceTemplateSpecVolumeSecret": {
            "properties": {
                "defaultMode": {
                    "type": "integer",
                    "description": "Mode bits to use on created files by default. Must be a value between 0000\nand 0777. Defaults to 0644. Directories within the path are not affected by\nthis setting. This might be in conflict with other options that affect the\nfile mode, like fsGroup, and the result can be other mode bits set.\n"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrun/getServiceTemplateSpecVolumeSecretItem:getServiceTemplateSpecVolumeSecretItem"
                    },
                    "description": "If unspecified, the volume will expose a file whose name is the\nsecret_name.\nIf specified, the key will be used as the version to fetch from Cloud\nSecret Manager and the path will be the name of the file exposed in the\nvolume. When items are defined, they must specify a key and a path.\n"
                },
                "secretName": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. By default, the secret\nis assumed to be in the same project.\nIf the secret is in another project, you must define an alias.\nAn alias definition has the form:\n{alias}:projects/{project-id|project-number}/secrets/{secret-name}.\nIf multiple alias definitions are needed, they must be separated by\ncommas.\nThe alias definitions must be set on the run.googleapis.com/secrets\nannotation.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultMode",
                "items",
                "secretName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTemplateSpecVolumeSecretItem:getServiceTemplateSpecVolumeSecretItem": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version.\nCan be 'latest' for the latest value or an integer for a specific version.\n"
                },
                "mode": {
                    "type": "integer",
                    "description": "Mode bits to use on this file, must be a value between 0000 and 0777. If\nnot specified, the volume defaultMode will be used. This might be in\nconflict with other options that affect the file mode, like fsGroup, and\nthe result can be other mode bits set.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "mode",
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrun/getServiceTraffic:getServiceTraffic": {
            "properties": {
                "latestRevision": {
                    "type": "boolean",
                    "description": "LatestRevision may be optionally provided to indicate that the latest ready\nRevision of the Configuration should be used for this traffic target. When\nprovided LatestRevision must be true if RevisionName is empty; it must be\nfalse when RevisionName is non-empty.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "Percent specifies percent of the traffic to this Revision or Configuration.\n"
                },
                "revisionName": {
                    "type": "string",
                    "description": "RevisionName of a specific revision to which to send this portion of traffic.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Tag is optionally used to expose a dedicated url for referencing this target exclusively.\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL displays the URL for accessing tagged traffic targets. URL is displayed in status,\nand is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname,\nbut may not contain anything else (e.g. basic auth, url path, etc.)\n"
                }
            },
            "type": "object",
            "required": [
                "latestRevision",
                "percent",
                "revisionName",
                "tag",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/JobBinaryAuthorization:JobBinaryAuthorization": {
            "properties": {
                "breakglassJustification": {
                    "type": "string",
                    "description": "If present, indicates to use Breakglass using this justification. If useDefault is False, then it must be empty. For more information on breakglass, see https://cloud.google.com/binary-authorization/docs/using-breakglass\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The path to a binary authorization policy. Format: projects/{project}/platforms/cloudRun/{policy-name}\n"
                },
                "useDefault": {
                    "type": "boolean",
                    "description": "If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/JobCondition:JobCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "(Output)\nLast time the condition transitioned from one status to another.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nHuman readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nA common (service-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "(Output)\nHow to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\ntype is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * \"Ready\": True when the Resource is ready.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "executionReason",
                        "lastTransitionTime",
                        "message",
                        "reason",
                        "revisionReason",
                        "severity",
                        "state",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobIamBindingCondition:JobIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudrunv2/JobIamMemberCondition:JobIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudrunv2/JobLatestCreatedExecution:JobLatestCreatedExecution": {
            "properties": {
                "completionTime": {
                    "type": "string",
                    "description": "(Output)\nCompletion timestamp of the execution.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "(Output)\nCreation timestamp of the execution.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Job.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "completionTime",
                        "createTime",
                        "name"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplate:JobTemplate": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects.\nCloud Run API v2 does not support annotations with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system annotations in v1 now have a corresponding field in v2 ExecutionTemplate.\nThis field follows Kubernetes annotations' namespacing, limits, and rules.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter,\nor break down billing charges by team, component, environment, state, etc. For more information, visit https://docs.cloud.google.com/resource-manager/docs/creating-managing-labels or\nhttps://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 ExecutionTemplate.\n"
                },
                "parallelism": {
                    "type": "integer",
                    "description": "Specifies the maximum desired number of tasks the execution should run at given time. Must be \u003c= taskCount. When the job is run, if this field is 0 or unset, the maximum possible value will be used for that execution. The actual number of tasks running in steady state will be less than this number when there are fewer tasks waiting to be completed remaining, i.e. when the work left to do is less than max parallelism.\n"
                },
                "taskCount": {
                    "type": "integer",
                    "description": "Specifies the desired number of tasks the execution should run. Setting to 1 means that parallelism is limited to 1 and the success of that task signals the success of the execution. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\n"
                },
                "template": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplate:JobTemplateTemplate",
                    "description": "Describes the task(s) that will be created when executing an execution\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "template"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "parallelism",
                        "taskCount",
                        "template"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplateTemplate:JobTemplateTemplate": {
            "properties": {
                "containers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainer:JobTemplateTemplateContainer"
                    },
                    "description": "Holds the single container that defines the unit of execution for this task.\nStructure is documented below.\n"
                },
                "encryptionKey": {
                    "type": "string",
                    "description": "A reference to a customer managed encryption key (CMEK) to use to encrypt this container image. For more information, go to https://cloud.google.com/run/docs/securing/using-cmek\n"
                },
                "executionEnvironment": {
                    "type": "string",
                    "description": "The execution environment being used to host this Task.\nPossible values are: `EXECUTION_ENVIRONMENT_GEN1`, `EXECUTION_ENVIRONMENT_GEN2`.\n"
                },
                "gpuZonalRedundancyDisabled": {
                    "type": "boolean",
                    "description": "True if GPU zonal redundancy is disabled on this execution.\n"
                },
                "maxRetries": {
                    "type": "integer",
                    "description": "Number of retries allowed per Task, before marking this Task failed. Defaults to 3. Minimum value is 0.\n"
                },
                "nodeSelector": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateNodeSelector:JobTemplateTemplateNodeSelector",
                    "description": "Node Selector describes the hardware requirements of the resources.\nStructure is documented below.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Email address of the IAM service account associated with the Task of a Job. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project's default service account.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Max allowed time duration the Task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout.\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVolume:JobTemplateTemplateVolume"
                    },
                    "description": "A list of Volumes to make available to containers.\nStructure is documented below.\n"
                },
                "vpcAccess": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVpcAccess:JobTemplateTemplateVpcAccess",
                    "description": "VPC Access configuration to use for this Task. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "containers",
                        "executionEnvironment",
                        "serviceAccount",
                        "timeout"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainer:JobTemplateTemplateContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references are not supported in Cloud Run.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n"
                },
                "dependsOns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of the containers that must start before this container.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerEnv:JobTemplateTemplateContainerEnv"
                    },
                    "description": "List of environment variables to set in the container.\nStructure is documented below.\n"
                },
                "image": {
                    "type": "string",
                    "description": "URL of the Container image in Google Container Registry or Google Artifact Registry. More info: https://kubernetes.io/docs/concepts/containers/images\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the container specified as a DNS_LABEL.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerPort:JobTemplateTemplateContainerPort"
                    },
                    "description": "List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible.\nIf omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on\nStructure is documented below.\n"
                },
                "resources": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerResources:JobTemplateTemplateContainerResources",
                    "description": "Compute Resource requirements by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\nStructure is documented below.\n"
                },
                "startupProbe": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbe:JobTemplateTemplateContainerStartupProbe",
                    "description": "Startup probe of application within the container.\nAll other probes are disabled if a startup probe is provided, until it\nsucceeds. Container will not be added to service endpoints if the probe fails.\nStructure is documented below.\n"
                },
                "volumeMounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerVolumeMount:JobTemplateTemplateContainerVolumeMount"
                    },
                    "description": "Volume to mount into the container's filesystem.\nStructure is documented below.\n"
                },
                "workingDir": {
                    "type": "string",
                    "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "image",
                        "resources",
                        "startupProbe"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerEnv:JobTemplateTemplateContainerEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the environment variable. Must be a C_IDENTIFIER, and mnay not exceed 32768 characters.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Literal value of the environment variable. Defaults to \"\" and the maximum allowed length is 32768 characters. Variable references are not supported in Cloud Run.\n"
                },
                "valueSource": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerEnvValueSource:JobTemplateTemplateContainerEnvValueSource",
                    "description": "Source for the environment variable's value.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerEnvValueSource:JobTemplateTemplateContainerEnvValueSource": {
            "properties": {
                "secretKeyRef": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerEnvValueSourceSecretKeyRef:JobTemplateTemplateContainerEnvValueSourceSecretKeyRef",
                    "description": "Selects a secret and a specific version from Cloud Secret Manager.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerEnvValueSourceSecretKeyRef:JobTemplateTemplateContainerEnvValueSourceSecretKeyRef": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secretName} if the secret is in the same project. projects/{project}/secrets/{secretName} if the secret is in a different project.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version.\n"
                }
            },
            "type": "object",
            "required": [
                "secret",
                "version"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerPort:JobTemplateTemplateContainerPort": {
            "properties": {
                "containerPort": {
                    "type": "integer",
                    "description": "Port number the container listens on. This must be a valid TCP port number, 0 \u003c containerPort \u003c 65536.\n"
                },
                "name": {
                    "type": "string",
                    "description": "If specified, used to specify which protocol to use. Allowed values are \"http1\" and \"h2c\".\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerResources:JobTemplateTemplateContainerResources": {
            "properties": {
                "limits": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Only memory, CPU, and nvidia.com/gpu are supported. Use key \u003cspan pulumi-lang-nodejs=\"`cpu`\" pulumi-lang-dotnet=\"`Cpu`\" pulumi-lang-go=\"`cpu`\" pulumi-lang-python=\"`cpu`\" pulumi-lang-yaml=\"`cpu`\" pulumi-lang-java=\"`cpu`\" pulumi-lang-hcl=\"`cpu`\"\u003e`cpu`\u003c/span\u003e for CPU limit, \u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\" pulumi-lang-hcl=\"`memory`\"\u003e`memory`\u003c/span\u003e for memory limit, `nvidia.com/gpu` for gpu limit. Note: The only supported values for CPU are '1', '2', '4', '6', and '8'. Setting 4 CPU requires at least 2Gi of memory, setting 6 or more CPU requires at least 4Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "limits"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbe:JobTemplateTemplateContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeGrpc:JobTemplateTemplateContainerStartupProbeGrpc",
                    "description": "GRPC specifies an action involving a GRPC port.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeHttpGet:JobTemplateTemplateContainerStartupProbeHttpGet",
                    "description": "HttpGet specifies the http request to perform.\nStructure is documented below.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is\ninitiated.\nDefaults to 0 seconds. Minimum value is 0. Maximum value is 240.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1. Maximum value is 240.\n"
                },
                "tcpSocket": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeTcpSocket:JobTemplateTemplateContainerStartupProbeTcpSocket",
                    "description": "TcpSocket specifies an action involving a TCP port.\nStructure is documented below.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1. Maximum value is 3600.\nMust be smaller than periodSeconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeGrpc:JobTemplateTemplateContainerStartupProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeHttpGet:JobTemplateTemplateContainerStartupProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeHttpGetHttpHeader:JobTemplateTemplateContainerStartupProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\nStructure is documented below.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeHttpGetHttpHeader:JobTemplateTemplateContainerStartupProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The header field name.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerStartupProbeTcpSocket:JobTemplateTemplateContainerStartupProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplateTemplateContainerVolumeMount:JobTemplateTemplateContainerVolumeMount": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "Path within the container at which the volume should be mounted. Must not contain ':'. For Cloud SQL volumes, it can be left empty, or must otherwise be /cloudsql. All instances defined in the Volume will be available as /cloudsql/[instance]. For more information on Cloud SQL volumes, visit https://cloud.google.com/sql/docs/mysql/connect-run\n"
                },
                "name": {
                    "type": "string",
                    "description": "This must match the Name of a Volume.\n"
                },
                "subPath": {
                    "type": "string",
                    "description": "Path within the volume from which the container's volume should be mounted.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "name"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateNodeSelector:JobTemplateTemplateNodeSelector": {
            "properties": {
                "accelerator": {
                    "type": "string",
                    "description": "The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/jobs/gpu for configuring GPU.\n"
                }
            },
            "type": "object",
            "required": [
                "accelerator"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateVolume:JobTemplateTemplateVolume": {
            "properties": {
                "cloudSqlInstance": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVolumeCloudSqlInstance:JobTemplateTemplateVolumeCloudSqlInstance",
                    "description": "For Cloud SQL volumes, contains the specific instances that should be mounted. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run.\nStructure is documented below.\n"
                },
                "emptyDir": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVolumeEmptyDir:JobTemplateTemplateVolumeEmptyDir",
                    "description": "Ephemeral storage used as a shared volume.\nStructure is documented below.\n"
                },
                "gcs": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVolumeGcs:JobTemplateTemplateVolumeGcs",
                    "description": "Cloud Storage bucket mounted as a volume using GCSFuse.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Volume's name.\n"
                },
                "nfs": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVolumeNfs:JobTemplateTemplateVolumeNfs",
                    "description": "NFS share mounted as a volume.\nStructure is documented below.\n"
                },
                "secret": {
                    "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVolumeSecret:JobTemplateTemplateVolumeSecret",
                    "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateVolumeCloudSqlInstance:JobTemplateTemplateVolumeCloudSqlInstance": {
            "properties": {
                "instances": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Cloud SQL instance connection names, as can be found in https://console.cloud.google.com/sql/instances. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run. Format: {project}:{location}:{instance}\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/JobTemplateTemplateVolumeEmptyDir:JobTemplateTemplateVolumeEmptyDir": {
            "properties": {
                "medium": {
                    "type": "string",
                    "description": "The different types of medium supported for EmptyDir.\nDefault value is `MEMORY`.\nPossible values are: `MEMORY`, `DISK`.\n"
                },
                "sizeLimit": {
                    "type": "string",
                    "description": "Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. This field's values are of the 'Quantity' k8s type: https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/JobTemplateTemplateVolumeGcs:JobTemplateTemplateVolumeGcs": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Name of the cloud storage bucket to back the volume. The resource service account must have permission to access the bucket.\n"
                },
                "mountOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of flags to pass to the gcsfuse command for configuring this volume.\nFlags should be passed without leading dashes.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount this volume as read-only in all mounts. If false, mount this volume as read-write.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateVolumeNfs:JobTemplateTemplateVolumeNfs": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path that is exported by the NFS server.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount this volume as read-only in all mounts.\n"
                },
                "server": {
                    "type": "string",
                    "description": "Hostname or IP address of the NFS server.\n"
                }
            },
            "type": "object",
            "required": [
                "server"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateVolumeSecret:JobTemplateTemplateVolumeSecret": {
            "properties": {
                "defaultMode": {
                    "type": "integer",
                    "description": "Integer representation of mode bits to use on created files by default. Must be a value between 0000 and 0777 (octal), defaulting to 0444. Directories within the path are not affected by this setting.\n"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVolumeSecretItem:JobTemplateTemplateVolumeSecretItem"
                    },
                    "description": "If unspecified, the volume will expose a file whose name is the secret, relative to VolumeMount.mount_path. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a path and a version.\nStructure is documented below.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secret} if the secret is in the same project. projects/{project}/secrets/{secret} if the secret is in a different project.\n"
                }
            },
            "type": "object",
            "required": [
                "secret"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateVolumeSecretItem:JobTemplateTemplateVolumeSecretItem": {
            "properties": {
                "mode": {
                    "type": "integer",
                    "description": "Integer octal mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume's default mode will be used.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The relative path of the secret in the container.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "version"
            ]
        },
        "gcp:cloudrunv2/JobTemplateTemplateVpcAccess:JobTemplateTemplateVpcAccess": {
            "properties": {
                "connector": {
                    "type": "string",
                    "description": "VPC Access connector name. Format: projects/{project}/locations/{location}/connectors/{connector}, where {project} can be project id or number.\n"
                },
                "egress": {
                    "type": "string",
                    "description": "Traffic VPC egress settings.\nPossible values are: `ALL_TRAFFIC`, `PRIVATE_RANGES_ONLY`.\n"
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/JobTemplateTemplateVpcAccessNetworkInterface:JobTemplateTemplateVpcAccessNetworkInterface"
                    },
                    "description": "Direct VPC egress settings. Currently only single network interface is supported.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "egress"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTemplateTemplateVpcAccessNetworkInterface:JobTemplateTemplateVpcAccessNetworkInterface": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "The VPC network that the Cloud Run resource will be able to send traffic to. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If network is not specified, it will be\nlooked up from the subnetwork.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The VPC subnetwork that the Cloud Run resource will get IPs from. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the\nsubnetwork with the same name with the network will be used.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags applied to this Cloud Run job.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "network",
                        "subnetwork"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/JobTerminalCondition:JobTerminalCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "(Output)\nLast time the condition transitioned from one status to another.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nHuman readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nA common (service-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "(Output)\nHow to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\ntype is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * \"Ready\": True when the Resource is ready.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "executionReason",
                        "lastTransitionTime",
                        "message",
                        "reason",
                        "revisionReason",
                        "severity",
                        "state",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceBinaryAuthorization:ServiceBinaryAuthorization": {
            "properties": {
                "breakglassJustification": {
                    "type": "string",
                    "description": "If present, indicates to use Breakglass using this justification. If useDefault is False, then it must be empty. For more information on breakglass, see https://cloud.google.com/binary-authorization/docs/using-breakglass\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The path to a binary authorization policy. Format: projects/{project}/platforms/cloudRun/{policy-name}\n"
                },
                "useDefault": {
                    "type": "boolean",
                    "description": "If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceBuildConfig:ServiceBuildConfig": {
            "properties": {
                "baseImage": {
                    "type": "string",
                    "description": "The base image used to build the function.\n"
                },
                "enableAutomaticUpdates": {
                    "type": "boolean",
                    "description": "Sets whether the function will receive automatic base image updates.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "User-provided build-time environment variables for the function.\n"
                },
                "functionTarget": {
                    "type": "string",
                    "description": "The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix, if not specified. For backward compatibility, if function with given name is not found, then the system will try to use function named \"function\".\n"
                },
                "imageUri": {
                    "type": "string",
                    "description": "Artifact Registry URI to store the built image.\n"
                },
                "name": {
                    "type": "string",
                    "description": "(Output)\nThe Cloud Build name of the latest successful deployment of the function.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Service account to be used for building the container. The format of this field is `projects/{projectId}/serviceAccounts/{serviceAccountEmail}`.\n"
                },
                "sourceLocation": {
                    "type": "string",
                    "description": "The Cloud Storage bucket URI where the function source code is located.\n"
                },
                "workerPool": {
                    "type": "string",
                    "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the Cloud Run function. The format of this field is `projects/{project}/locations/{region}/workerPools/{workerPool}` where {project} and {region} are the project id and region respectively where the worker pool is defined and {workerPool} is the short name of the worker pool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceCondition:ServiceCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "(Output)\nLast time the condition transitioned from one status to another.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nHuman readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nA common (service-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "(Output)\nHow to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe allocation type for this traffic target.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "executionReason",
                        "lastTransitionTime",
                        "message",
                        "reason",
                        "revisionReason",
                        "severity",
                        "state",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceIamBindingCondition:ServiceIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudrunv2/ServiceIamMemberCondition:ServiceIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudrunv2/ServiceMultiRegionSettings:ServiceMultiRegionSettings": {
            "properties": {
                "multiRegionId": {
                    "type": "string",
                    "description": "(Output)\nSystem-generated unique id for the multi-region Service.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of regions to deploy the multi-region Service.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "multiRegionId"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceScaling:ServiceScaling": {
            "properties": {
                "manualInstanceCount": {
                    "type": "integer",
                    "description": "Total instance count for the service in manual scaling mode. This number of instances is divided among all revisions with specified traffic based on the percent of traffic they are receiving.\n"
                },
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "Combined maximum number of instances for all revisions receiving traffic.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "Minimum number of instances for the service, to be divided among all revisions receiving traffic.\n"
                },
                "scalingMode": {
                    "type": "string",
                    "description": "The [scaling mode](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services#scalingmode) for the service.\nPossible values are: `AUTOMATIC`, `MANUAL`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "manualInstanceCount",
                        "maxInstanceCount",
                        "minInstanceCount"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplate:ServiceTemplate": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects.\nCloud Run API v2 does not support annotations with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system annotations in v1 now have a corresponding field in v2 RevisionTemplate.\nThis field follows Kubernetes annotations' namespacing, limits, and rules.\n"
                },
                "containers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainer:ServiceTemplateContainer"
                    },
                    "description": "Holds the containers that define the unit of execution for this Service.\nStructure is documented below.\n"
                },
                "encryptionKey": {
                    "type": "string",
                    "description": "A reference to a customer managed encryption key (CMEK) to use to encrypt this container image. For more information, go to https://cloud.google.com/run/docs/securing/using-cmek\n"
                },
                "executionEnvironment": {
                    "type": "string",
                    "description": "The sandbox environment to host this Revision.\nPossible values are: `EXECUTION_ENVIRONMENT_GEN1`, `EXECUTION_ENVIRONMENT_GEN2`.\n"
                },
                "gpuZonalRedundancyDisabled": {
                    "type": "boolean",
                    "description": "True if GPU zonal redundancy is disabled on this revision.\n"
                },
                "healthCheckDisabled": {
                    "type": "boolean",
                    "description": "Disables health checking containers during deployment.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component, environment, state, etc.\nFor more information, visit https://docs.cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 RevisionTemplate.\n"
                },
                "maxInstanceRequestConcurrency": {
                    "type": "integer",
                    "description": "Sets the maximum number of requests that each serving instance can receive.\nIf not specified or 0, defaults to 80 when requested CPU \u003e= 1 and defaults to 1 when requested CPU \u003c 1.\n"
                },
                "nodeSelector": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateNodeSelector:ServiceTemplateNodeSelector",
                    "description": "Node Selector describes the hardware requirements of the resources.\nStructure is documented below.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The unique name for the revision. If this field is omitted, it will be automatically generated based on the Service name.\n"
                },
                "scaling": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateScaling:ServiceTemplateScaling",
                    "description": "Scaling settings for this Revision.\nStructure is documented below.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Email address of the IAM service account associated with the revision of the service. The service account represents the identity of the running revision, and determines what permissions the revision has. If not provided, the revision will use the project's default service account.\n"
                },
                "serviceMesh": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateServiceMesh:ServiceTemplateServiceMesh",
                    "description": "(Optional, Beta)\nEnables Cloud Service Mesh for this Revision.\nStructure is documented below.\n"
                },
                "sessionAffinity": {
                    "type": "boolean",
                    "description": "Enables session affinity. For more information, go to https://cloud.google.com/run/docs/configuring/session-affinity\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Max allowed time for an instance to respond to a request.\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVolume:ServiceTemplateVolume"
                    },
                    "description": "A list of Volumes to make available to containers.\nStructure is documented below.\n"
                },
                "vpcAccess": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVpcAccess:ServiceTemplateVpcAccess",
                    "description": "VPC Access configuration to use for this Task. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxInstanceRequestConcurrency",
                        "scaling",
                        "serviceAccount",
                        "timeout"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainer:ServiceTemplateContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references are not supported in Cloud Run.\n"
                },
                "baseImageUri": {
                    "type": "string",
                    "description": "Base image for this container. If set, it indicates that the service is enrolled into automatic base image update.\n"
                },
                "buildInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerBuildInfo:ServiceTemplateContainerBuildInfo"
                    },
                    "description": "(Output)\nThe build info of the container image.\nStructure is documented below.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n"
                },
                "dependsOns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Containers which should be started before this container. If specified the container will wait to start until all containers with the listed names are healthy.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerEnv:ServiceTemplateContainerEnv"
                    },
                    "description": "List of environment variables to set in the container.\nStructure is documented below.\n"
                },
                "image": {
                    "type": "string",
                    "description": "URL of the Container image in Google Container Registry or Google Artifact Registry. More info: https://kubernetes.io/docs/concepts/containers/images\n"
                },
                "livenessProbe": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerLivenessProbe:ServiceTemplateContainerLivenessProbe",
                    "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the container specified as a DNS_LABEL.\n"
                },
                "ports": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerPorts:ServiceTemplateContainerPorts",
                    "description": "List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible.\nIf omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on\nStructure is documented below.\n"
                },
                "readinessProbe": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerReadinessProbe:ServiceTemplateContainerReadinessProbe",
                    "description": "Periodic probe of container readiness.\nStructure is documented below.\n"
                },
                "resources": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerResources:ServiceTemplateContainerResources",
                    "description": "Compute Resource requirements by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\nStructure is documented below.\n"
                },
                "sourceCode": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerSourceCode:ServiceTemplateContainerSourceCode",
                    "description": "(Optional, Beta)\nLocation of the source.\nStructure is documented below.\n"
                },
                "startupProbe": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerStartupProbe:ServiceTemplateContainerStartupProbe",
                    "description": "Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\nStructure is documented below.\n"
                },
                "volumeMounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerVolumeMount:ServiceTemplateContainerVolumeMount"
                    },
                    "description": "Volume to mount into the container's filesystem.\nStructure is documented below.\n"
                },
                "workingDir": {
                    "type": "string",
                    "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "buildInfos",
                        "image",
                        "ports",
                        "resources",
                        "startupProbe"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerBuildInfo:ServiceTemplateContainerBuildInfo": {
            "properties": {
                "functionTarget": {
                    "type": "string",
                    "description": "Entry point of the function when the image is a Cloud Run function.\n"
                },
                "sourceLocation": {
                    "type": "string",
                    "description": "Source code location of the image.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "functionTarget",
                        "sourceLocation"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerEnv:ServiceTemplateContainerEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the environment variable. Must be a C_IDENTIFIER, and may not exceed 32768 characters.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Literal value of the environment variable. Defaults to \"\" and the maximum allowed length is 32768 characters. Variable references are not supported in Cloud Run.\n"
                },
                "valueSource": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerEnvValueSource:ServiceTemplateContainerEnvValueSource",
                    "description": "Source for the environment variable's value.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateContainerEnvValueSource:ServiceTemplateContainerEnvValueSource": {
            "properties": {
                "secretKeyRef": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerEnvValueSourceSecretKeyRef:ServiceTemplateContainerEnvValueSourceSecretKeyRef",
                    "description": "Selects a secret and a specific version from Cloud Secret Manager.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceTemplateContainerEnvValueSourceSecretKeyRef:ServiceTemplateContainerEnvValueSourceSecretKeyRef": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secretName} if the secret is in the same project. projects/{project}/secrets/{secretName} if the secret is in a different project.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version.\n"
                }
            },
            "type": "object",
            "required": [
                "secret"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateContainerLivenessProbe:ServiceTemplateContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeGrpc:ServiceTemplateContainerLivenessProbeGrpc",
                    "description": "GRPC specifies an action involving a GRPC port.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeHttpGet:ServiceTemplateContainerLivenessProbeHttpGet",
                    "description": "HTTPGet specifies the http request to perform.\nStructure is documented below.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeoutSeconds\n"
                },
                "tcpSocket": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeTcpSocket:ServiceTemplateContainerLivenessProbeTcpSocket",
                    "description": "TCPSocketAction describes an action based on opening a socket\nStructure is documented below.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than periodSeconds. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeGrpc:ServiceTemplateContainerLivenessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-dotnet=\"\"NestedTemplateContainersBuildInfo\"\" pulumi-lang-go=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-python=\"\"nested_template_containers_build_info\"\" pulumi-lang-yaml=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-java=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-hcl=\"\"nested_template_containers_build_info\"\"\u003e\"nestedTemplateContainersBuildInfo\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`buildInfo`\" pulumi-lang-dotnet=\"`BuildInfo`\" pulumi-lang-go=\"`buildInfo`\" pulumi-lang-python=\"`build_info`\" pulumi-lang-yaml=\"`buildInfo`\" pulumi-lang-java=\"`buildInfo`\" pulumi-lang-hcl=\"`build_info`\"\u003e`buildInfo`\u003c/span\u003e block contains:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeHttpGet:ServiceTemplateContainerLivenessProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeHttpGetHttpHeader:ServiceTemplateContainerLivenessProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\nStructure is documented below.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeHttpGetHttpHeader:ServiceTemplateContainerLivenessProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The header field name\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateContainerLivenessProbeTcpSocket:ServiceTemplateContainerLivenessProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "port"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateContainerPorts:ServiceTemplateContainerPorts": {
            "properties": {
                "containerPort": {
                    "type": "integer",
                    "description": "Port number the container listens on. This must be a valid TCP port number, 0 \u003c containerPort \u003c 65536.\n"
                },
                "name": {
                    "type": "string",
                    "description": "If specified, used to specify which protocol to use. Allowed values are \"http1\" and \"h2c\".\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerReadinessProbe:ServiceTemplateContainerReadinessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerReadinessProbeGrpc:ServiceTemplateContainerReadinessProbeGrpc",
                    "description": "GRPC specifies an action involving a GRPC port.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerReadinessProbeHttpGet:ServiceTemplateContainerReadinessProbeHttpGet",
                    "description": "HttpGet specifies the http request to perform.\nStructure is documented below.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds.\n"
                },
                "successThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 2.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Must be smaller than period_seconds.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "failureThreshold",
                        "periodSeconds",
                        "successThreshold",
                        "timeoutSeconds"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerReadinessProbeGrpc:ServiceTemplateContainerReadinessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-dotnet=\"\"NestedTemplateContainersBuildInfo\"\" pulumi-lang-go=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-python=\"\"nested_template_containers_build_info\"\" pulumi-lang-yaml=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-java=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-hcl=\"\"nested_template_containers_build_info\"\"\u003e\"nestedTemplateContainersBuildInfo\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`buildInfo`\" pulumi-lang-dotnet=\"`BuildInfo`\" pulumi-lang-go=\"`buildInfo`\" pulumi-lang-python=\"`build_info`\" pulumi-lang-yaml=\"`buildInfo`\" pulumi-lang-java=\"`buildInfo`\" pulumi-lang-hcl=\"`build_info`\"\u003e`buildInfo`\u003c/span\u003e block contains:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerReadinessProbeHttpGet:ServiceTemplateContainerReadinessProbeHttpGet": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "path",
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerResources:ServiceTemplateContainerResources": {
            "properties": {
                "cpuIdle": {
                    "type": "boolean",
                    "description": "Determines whether CPU is only allocated during requests. True by default if the parent \u003cspan pulumi-lang-nodejs=\"`resources`\" pulumi-lang-dotnet=\"`Resources`\" pulumi-lang-go=\"`resources`\" pulumi-lang-python=\"`resources`\" pulumi-lang-yaml=\"`resources`\" pulumi-lang-java=\"`resources`\" pulumi-lang-hcl=\"`resources`\"\u003e`resources`\u003c/span\u003e field is not set. However, if\n\u003cspan pulumi-lang-nodejs=\"`resources`\" pulumi-lang-dotnet=\"`Resources`\" pulumi-lang-go=\"`resources`\" pulumi-lang-python=\"`resources`\" pulumi-lang-yaml=\"`resources`\" pulumi-lang-java=\"`resources`\" pulumi-lang-hcl=\"`resources`\"\u003e`resources`\u003c/span\u003e is set, this field must be explicitly set to true to preserve the default behavior.\n"
                },
                "limits": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Only memory, CPU, and nvidia.com/gpu are supported. Use key \u003cspan pulumi-lang-nodejs=\"`cpu`\" pulumi-lang-dotnet=\"`Cpu`\" pulumi-lang-go=\"`cpu`\" pulumi-lang-python=\"`cpu`\" pulumi-lang-yaml=\"`cpu`\" pulumi-lang-java=\"`cpu`\" pulumi-lang-hcl=\"`cpu`\"\u003e`cpu`\u003c/span\u003e for CPU limit, \u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\" pulumi-lang-hcl=\"`memory`\"\u003e`memory`\u003c/span\u003e for memory limit, `nvidia.com/gpu` for gpu limit. Note: The only supported values for CPU are '1', '2', '4', '6' and '8'. Setting 4 CPU requires at least 2Gi of memory, setting 6 or more CPU requires at least 4Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                },
                "startupCpuBoost": {
                    "type": "boolean",
                    "description": "Determines whether CPU should be boosted on startup of a new container instance above the requested CPU threshold, this can help reduce cold-start latency.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "limits"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerSourceCode:ServiceTemplateContainerSourceCode": {
            "properties": {
                "cloudStorageSource": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerSourceCodeCloudStorageSource:ServiceTemplateContainerSourceCodeCloudStorageSource",
                    "description": "Cloud Storage source.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceTemplateContainerSourceCodeCloudStorageSource:ServiceTemplateContainerSourceCodeCloudStorageSource": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The Cloud Storage bucket name.\n"
                },
                "generation": {
                    "type": "string",
                    "description": "The Cloud Storage object generation. The is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer.\n"
                },
                "object": {
                    "type": "string",
                    "description": "The Cloud Storage object name.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "object"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateContainerStartupProbe:ServiceTemplateContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerStartupProbeGrpc:ServiceTemplateContainerStartupProbeGrpc",
                    "description": "GRPC specifies an action involving a GRPC port.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerStartupProbeHttpGet:ServiceTemplateContainerStartupProbeHttpGet",
                    "description": "HTTPGet specifies the http request to perform. Exactly one of HTTPGet or TCPSocket must be specified.\nStructure is documented below.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeoutSeconds\n"
                },
                "tcpSocket": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerStartupProbeTcpSocket:ServiceTemplateContainerStartupProbeTcpSocket",
                    "description": "TCPSocket specifies an action involving a TCP port. Exactly one of HTTPGet or TCPSocket must be specified.\nStructure is documented below.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than periodSeconds. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceTemplateContainerStartupProbeGrpc:ServiceTemplateContainerStartupProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-dotnet=\"\"NestedTemplateContainersBuildInfo\"\" pulumi-lang-go=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-python=\"\"nested_template_containers_build_info\"\" pulumi-lang-yaml=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-java=\"\"nestedTemplateContainersBuildInfo\"\" pulumi-lang-hcl=\"\"nested_template_containers_build_info\"\"\u003e\"nestedTemplateContainersBuildInfo\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`buildInfo`\" pulumi-lang-dotnet=\"`BuildInfo`\" pulumi-lang-go=\"`buildInfo`\" pulumi-lang-python=\"`build_info`\" pulumi-lang-yaml=\"`buildInfo`\" pulumi-lang-java=\"`buildInfo`\" pulumi-lang-hcl=\"`build_info`\"\u003e`buildInfo`\u003c/span\u003e block contains:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerStartupProbeHttpGet:ServiceTemplateContainerStartupProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateContainerStartupProbeHttpGetHttpHeader:ServiceTemplateContainerStartupProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\nStructure is documented below.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerStartupProbeHttpGetHttpHeader:ServiceTemplateContainerStartupProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The header field name\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateContainerStartupProbeTcpSocket:ServiceTemplateContainerStartupProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "port"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateContainerVolumeMount:ServiceTemplateContainerVolumeMount": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "Path within the container at which the volume should be mounted. Must not contain ':'. For Cloud SQL volumes, it can be left empty, or must otherwise be /cloudsql. All instances defined in the Volume will be available as /cloudsql/[instance]. For more information on Cloud SQL volumes, visit https://cloud.google.com/sql/docs/mysql/connect-run\n"
                },
                "name": {
                    "type": "string",
                    "description": "This must match the Name of a Volume.\n"
                },
                "subPath": {
                    "type": "string",
                    "description": "Path within the volume from which the container's volume should be mounted.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "name"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateNodeSelector:ServiceTemplateNodeSelector": {
            "properties": {
                "accelerator": {
                    "type": "string",
                    "description": "The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/services/gpu for configuring GPU.\n"
                }
            },
            "type": "object",
            "required": [
                "accelerator"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateScaling:ServiceTemplateScaling": {
            "properties": {
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "Combined maximum number of instances for all revisions receiving traffic.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "Minimum number of instances for the service, to be divided among all revisions receiving traffic.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceTemplateServiceMesh:ServiceTemplateServiceMesh": {
            "properties": {
                "mesh": {
                    "type": "string",
                    "description": "The Mesh resource name. For more information see https://cloud.google.com/service-mesh/docs/reference/network-services/rest/v1/projects.locations.meshes#resource:-mesh.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceTemplateVolume:ServiceTemplateVolume": {
            "properties": {
                "cloudSqlInstance": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVolumeCloudSqlInstance:ServiceTemplateVolumeCloudSqlInstance",
                    "description": "For Cloud SQL volumes, contains the specific instances that should be mounted. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run.\nStructure is documented below.\n"
                },
                "emptyDir": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVolumeEmptyDir:ServiceTemplateVolumeEmptyDir",
                    "description": "Ephemeral storage used as a shared volume.\nStructure is documented below.\n"
                },
                "gcs": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVolumeGcs:ServiceTemplateVolumeGcs",
                    "description": "Cloud Storage bucket mounted as a volume using GCSFuse. This feature is only supported in the gen2 execution environment.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Volume's name.\n"
                },
                "nfs": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVolumeNfs:ServiceTemplateVolumeNfs",
                    "description": "Represents an NFS mount.\nStructure is documented below.\n"
                },
                "secret": {
                    "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVolumeSecret:ServiceTemplateVolumeSecret",
                    "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateVolumeCloudSqlInstance:ServiceTemplateVolumeCloudSqlInstance": {
            "properties": {
                "instances": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Cloud SQL instance connection names, as can be found in https://console.cloud.google.com/sql/instances. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run. Format: {project}:{location}:{instance}\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceTemplateVolumeEmptyDir:ServiceTemplateVolumeEmptyDir": {
            "properties": {
                "medium": {
                    "type": "string",
                    "description": "The different types of medium supported for EmptyDir.\nDefault value is `MEMORY`.\nPossible values are: `MEMORY`, `DISK`.\n"
                },
                "sizeLimit": {
                    "type": "string",
                    "description": "Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. This field's values are of the 'Quantity' k8s type: https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/ServiceTemplateVolumeGcs:ServiceTemplateVolumeGcs": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "GCS Bucket name\n"
                },
                "mountOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of flags to pass to the gcsfuse command for configuring this volume.\nFlags should be passed without leading dashes.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the GCS bucket as read-only\n"
                }
            },
            "type": "object",
            "required": [
                "bucket"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateVolumeNfs:ServiceTemplateVolumeNfs": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path that is exported by the NFS server.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the NFS volume as read only\n"
                },
                "server": {
                    "type": "string",
                    "description": "Hostname or IP address of the NFS server\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "server"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateVolumeSecret:ServiceTemplateVolumeSecret": {
            "properties": {
                "defaultMode": {
                    "type": "integer",
                    "description": "Integer representation of mode bits to use on created files by default. Must be a value between 0000 and 0777 (octal), defaulting to 0444. Directories within the path are not affected by this setting.\n"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVolumeSecretItem:ServiceTemplateVolumeSecretItem"
                    },
                    "description": "If unspecified, the volume will expose a file whose name is the secret, relative to VolumeMount.mount_path. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a path and a version.\nStructure is documented below.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secret} if the secret is in the same project. projects/{project}/secrets/{secret} if the secret is in a different project.\n"
                }
            },
            "type": "object",
            "required": [
                "secret"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateVolumeSecretItem:ServiceTemplateVolumeSecretItem": {
            "properties": {
                "mode": {
                    "type": "integer",
                    "description": "Integer octal mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume's default mode will be used.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The relative path of the secret in the container.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ]
        },
        "gcp:cloudrunv2/ServiceTemplateVpcAccess:ServiceTemplateVpcAccess": {
            "properties": {
                "connector": {
                    "type": "string",
                    "description": "VPC Access connector name. Format: projects/{project}/locations/{location}/connectors/{connector}, where {project} can be project id or number.\n"
                },
                "egress": {
                    "type": "string",
                    "description": "Traffic VPC egress settings.\nPossible values are: `ALL_TRAFFIC`, `PRIVATE_RANGES_ONLY`.\n"
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/ServiceTemplateVpcAccessNetworkInterface:ServiceTemplateVpcAccessNetworkInterface"
                    },
                    "description": "Direct VPC egress settings. Currently only single network interface is supported.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "egress"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTemplateVpcAccessNetworkInterface:ServiceTemplateVpcAccessNetworkInterface": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "The VPC network that the Cloud Run resource will be able to send traffic to. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If network is not specified, it will be\nlooked up from the subnetwork.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The VPC subnetwork that the Cloud Run resource will get IPs from. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the\nsubnetwork with the same name with the network will be used.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags applied to this Cloud Run service.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "network",
                        "subnetwork"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTerminalCondition:ServiceTerminalCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "(Output)\nLast time the condition transitioned from one status to another.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nHuman readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nA common (service-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "(Output)\nHow to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe allocation type for this traffic target.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "executionReason",
                        "lastTransitionTime",
                        "message",
                        "reason",
                        "revisionReason",
                        "severity",
                        "state",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTraffic:ServiceTraffic": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "Specifies percent of the traffic to this Revision. This defaults to zero if unspecified.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "Revision to which to send this portion of traffic, if traffic allocation is by revision.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Indicates a string to be part of the URI to exclusively reference this target.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The allocation type for this traffic target.\nPossible values are: `TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST`, `TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "percent"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/ServiceTrafficStatus:ServiceTrafficStatus": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "(Output)\nSpecifies percent of the traffic to this Revision.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "(Output)\nRevision to which this traffic is sent.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "(Output)\nIndicates the string used in the URI to exclusively reference this target.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe allocation type for this traffic target.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "(Output)\nDisplays the target URI.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "percent",
                        "revision",
                        "tag",
                        "type",
                        "uri"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolBinaryAuthorization:WorkerPoolBinaryAuthorization": {
            "properties": {
                "breakglassJustification": {
                    "type": "string",
                    "description": "If present, indicates to use Breakglass using this justification. If useDefault is False, then it must be empty. For more information on breakglass, see https://cloud.google.com/binary-authorization/docs/using-breakglass\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The path to a binary authorization policy. Format: projects/{project}/platforms/cloudRun/{policy-name}\n"
                },
                "useDefault": {
                    "type": "boolean",
                    "description": "If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolCondition:WorkerPoolCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "(Output)\nLast time the condition transitioned from one status to another.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nHuman readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nA common (workerPool-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "(Output)\nHow to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe allocation type for this instance split.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "executionReason",
                        "lastTransitionTime",
                        "message",
                        "reason",
                        "revisionReason",
                        "severity",
                        "state",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolIamBindingCondition:WorkerPoolIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolIamMemberCondition:WorkerPoolIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolInstanceSplit:WorkerPoolInstanceSplit": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "Specifies percent of the instance split to this Revision. This defaults to zero if unspecified.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "Revision to which to assign this portion of instances, if split allocation is by revision.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The allocation type for this instance split.\nPossible values are: `INSTANCE_SPLIT_ALLOCATION_TYPE_LATEST`, `INSTANCE_SPLIT_ALLOCATION_TYPE_REVISION`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "percent"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolInstanceSplitStatus:WorkerPoolInstanceSplitStatus": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "(Output)\nSpecifies percent of the instance split to this Revision.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "(Output)\nRevision to which this instance split is assigned.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe allocation type for this instance split.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "percent",
                        "revision",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolScaling:WorkerPoolScaling": {
            "properties": {
                "manualInstanceCount": {
                    "type": "integer",
                    "description": "The total number of instances in manual scaling mode.\n"
                },
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "The maximum count of instances distributed among revisions based on the specified instance split percentages.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "The minimum count of instances distributed among revisions based on the specified instance split percentages.\n"
                },
                "scalingMode": {
                    "type": "string",
                    "description": "The scaling mode for the worker pool. It defaults to MANUAL.\nPossible values are: `AUTOMATIC`, `MANUAL`.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplate:WorkerPoolTemplate": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects.\nCloud Run API v2 does not support annotations with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system annotations in v1 now have a corresponding field in v2 WorkerPoolRevisionTemplate.\nThis field follows Kubernetes annotations' namespacing, limits, and rules.\n"
                },
                "client": {
                    "type": "string",
                    "description": "Arbitrary identifier for the API client.\n"
                },
                "clientVersion": {
                    "type": "string",
                    "description": "Arbitrary version identifier for the API client.\n"
                },
                "containers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainer:WorkerPoolTemplateContainer"
                    },
                    "description": "Holds the containers that define the unit of execution for this WorkerPool.\nStructure is documented below.\n"
                },
                "encryptionKey": {
                    "type": "string",
                    "description": "A reference to a customer managed encryption key (CMEK) to use to encrypt this container image. For more information, go to https://cloud.google.com/run/docs/securing/using-cmek\n"
                },
                "encryptionKeyRevocationAction": {
                    "type": "string",
                    "description": "The action to take if the encryption key is revoked.\nPossible values are: `PREVENT_NEW`, `SHUTDOWN`.\n"
                },
                "encryptionKeyShutdownDuration": {
                    "type": "string",
                    "description": "If encryptionKeyRevocationAction is SHUTDOWN, the duration before shutting down all instances. The minimum increment is 1 hour.\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".\n"
                },
                "gpuZonalRedundancyDisabled": {
                    "type": "boolean",
                    "description": "True if GPU zonal redundancy is disabled on this revision.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component, environment, state, etc.\nFor more information, visit https://docs.cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\nCloud Run API v2 does not support labels with `run.googleapis.com`, `cloud.googleapis.com`, `serving.knative.dev`, or `autoscaling.knative.dev` namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 WorkerPoolRevisionTemplate.\n"
                },
                "nodeSelector": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateNodeSelector:WorkerPoolTemplateNodeSelector",
                    "description": "Node Selector describes the hardware requirements of the resources.\nStructure is documented below.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The unique name for the revision. If this field is omitted, it will be automatically generated based on the WorkerPool name.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Email address of the IAM service account associated with the revision of the WorkerPool. The service account represents the identity of the running revision, and determines what permissions the revision has. If not provided, the revision will use the project's default service account.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVolume:WorkerPoolTemplateVolume"
                    },
                    "description": "A list of Volumes to make available to containers.\nStructure is documented below.\n"
                },
                "vpcAccess": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVpcAccess:WorkerPoolTemplateVpcAccess",
                    "description": "VPC Access configuration to use for this Revision. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceAccount"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainer:WorkerPoolTemplateContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references are not supported in Cloud Run.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n"
                },
                "dependsOns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of the containers that must start before this container.\n",
                    "willReplaceOnChanges": true
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerEnv:WorkerPoolTemplateContainerEnv"
                    },
                    "description": "List of environment variables to set in the container.\nStructure is documented below.\n"
                },
                "image": {
                    "type": "string",
                    "description": "URL of the Container image in Google Container Registry or Google Artifact Registry. More info: https://kubernetes.io/docs/concepts/containers/images\n"
                },
                "livenessProbe": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbe:WorkerPoolTemplateContainerLivenessProbe",
                    "description": "Periodic probe of container liveness. Container will be restarted if the probe fails.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the container specified as a DNS_LABEL.\n"
                },
                "resources": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerResources:WorkerPoolTemplateContainerResources",
                    "description": "Compute Resource requirements by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\nStructure is documented below.\n"
                },
                "startupProbe": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbe:WorkerPoolTemplateContainerStartupProbe",
                    "description": "Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails.\nStructure is documented below.\n"
                },
                "volumeMounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerVolumeMount:WorkerPoolTemplateContainerVolumeMount"
                    },
                    "description": "Volume to mount into the container's filesystem.\nStructure is documented below.\n"
                },
                "workingDir": {
                    "type": "string",
                    "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image.\n"
                }
            },
            "type": "object",
            "required": [
                "image"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "image",
                        "resources"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerEnv:WorkerPoolTemplateContainerEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the environment variable. Must be a C_IDENTIFIER, and may not exceed 32768 characters.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Literal value of the environment variable. Defaults to \"\" and the maximum allowed length is 32768 characters. Variable references are not supported in Cloud Run.\n"
                },
                "valueSource": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerEnvValueSource:WorkerPoolTemplateContainerEnvValueSource",
                    "description": "Source for the environment variable's value.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerEnvValueSource:WorkerPoolTemplateContainerEnvValueSource": {
            "properties": {
                "secretKeyRef": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerEnvValueSourceSecretKeyRef:WorkerPoolTemplateContainerEnvValueSourceSecretKeyRef",
                    "description": "Selects a secret and a specific version from Cloud Secret Manager.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerEnvValueSourceSecretKeyRef:WorkerPoolTemplateContainerEnvValueSourceSecretKeyRef": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secretName} if the secret is in the same project. projects/{project}/secrets/{secretName} if the secret is in a different project.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version.\n"
                }
            },
            "type": "object",
            "required": [
                "secret"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbe:WorkerPoolTemplateContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Optional. Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbeGrpc:WorkerPoolTemplateContainerLivenessProbeGrpc",
                    "description": "Optional. GRPC specifies an action involving a gRPC port. Exactly one of httpGet, tcpSocket, or grpc must be specified.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbeHttpGet:WorkerPoolTemplateContainerLivenessProbeHttpGet",
                    "description": "Optional. HTTPGet specifies the http request to perform. Exactly one of httpGet, tcpSocket, or grpc must be specified.\nStructure is documented below.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Optional. Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "Optional. How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.\n"
                },
                "tcpSocket": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbeTcpSocket:WorkerPoolTemplateContainerLivenessProbeTcpSocket",
                    "description": "Optional. TCPSocket specifies an action involving a TCP port. Exactly one of httpGet, tcpSocket, or grpc must be specified.\nStructure is documented below.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Optional. Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbeGrpc:WorkerPoolTemplateContainerLivenessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number of the gRPC service. Number must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Optional. Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md ). If this is not specified, the default behavior is defined by gRPC\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbeHttpGet:WorkerPoolTemplateContainerLivenessProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbeHttpGetHttpHeaders:WorkerPoolTemplateContainerLivenessProbeHttpGetHttpHeaders",
                    "description": "Optional. Custom headers to set in the request. HTTP allows repeated headers.\nStructure is documented below.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Optional. Path to access on the HTTP server. Defaults to '/'.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number to access on the container. Must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbeHttpGetHttpHeaders:WorkerPoolTemplateContainerLivenessProbeHttpGetHttpHeaders": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Required. The header field name\n"
                },
                "port": {
                    "type": "integer",
                    "description": "(Optional, Deprecated)\nRequired. The header field name\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e field is deprecated and will be removed in a future major release. It was never supported by the API.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e field is deprecated and will be removed in a future major release. It was never supported by the API."
                },
                "value": {
                    "type": "string",
                    "description": "Optional. The header field value\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerLivenessProbeTcpSocket:WorkerPoolTemplateContainerLivenessProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number to access on the container. Must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerResources:WorkerPoolTemplateContainerResources": {
            "properties": {
                "limits": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Only memory, CPU, and nvidia.com/gpu are supported. Use key \u003cspan pulumi-lang-nodejs=\"`cpu`\" pulumi-lang-dotnet=\"`Cpu`\" pulumi-lang-go=\"`cpu`\" pulumi-lang-python=\"`cpu`\" pulumi-lang-yaml=\"`cpu`\" pulumi-lang-java=\"`cpu`\" pulumi-lang-hcl=\"`cpu`\"\u003e`cpu`\u003c/span\u003e for CPU limit, \u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\" pulumi-lang-hcl=\"`memory`\"\u003e`memory`\u003c/span\u003e for memory limit, `nvidia.com/gpu` for gpu limit. Note: The only supported values for CPU are '1', '2', '4', '6', and '8'. Setting 4 CPU requires at least 2Gi of memory, setting 6 or more CPU requires at least 4Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "limits"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbe:WorkerPoolTemplateContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Optional. Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpc": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbeGrpc:WorkerPoolTemplateContainerStartupProbeGrpc",
                    "description": "Optional. GRPC specifies an action involving a gRPC port. Exactly one of httpGet, tcpSocket, or grpc must be specified.\nStructure is documented below.\n"
                },
                "httpGet": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbeHttpGet:WorkerPoolTemplateContainerStartupProbeHttpGet",
                    "description": "Optional. HTTPGet specifies the http request to perform. Exactly one of httpGet, tcpSocket, or grpc must be specified.\nStructure is documented below.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Optional. Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "Optional. How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.\n"
                },
                "tcpSocket": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbeTcpSocket:WorkerPoolTemplateContainerStartupProbeTcpSocket",
                    "description": "Optional. TCPSocket specifies an action involving a TCP port. Exactly one of httpGet, tcpSocket, or grpc must be specified.\nStructure is documented below.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Optional. Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbeGrpc:WorkerPoolTemplateContainerStartupProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number of the gRPC service. Number must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Optional. Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md ). If this is not specified, the default behavior is defined by gRPC\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbeHttpGet:WorkerPoolTemplateContainerStartupProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbeHttpGetHttpHeaders:WorkerPoolTemplateContainerStartupProbeHttpGetHttpHeaders",
                    "description": "Optional. Custom headers to set in the request. HTTP allows repeated headers.\nStructure is documented below.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Optional. Path to access on the HTTP server. Defaults to '/'.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number to access on the container. Must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbeHttpGetHttpHeaders:WorkerPoolTemplateContainerStartupProbeHttpGetHttpHeaders": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Required. The header field name\n"
                },
                "port": {
                    "type": "integer",
                    "description": "(Optional, Deprecated)\nRequired. The header field name\n\n\u003e **Warning:** \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e field is deprecated and will be removed in a future major release. It was never supported by the API.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e field is deprecated and will be removed in a future major release. It was never supported by the API."
                },
                "value": {
                    "type": "string",
                    "description": "Optional. The header field value\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerStartupProbeTcpSocket:WorkerPoolTemplateContainerStartupProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number to access on the container. Must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateContainerVolumeMount:WorkerPoolTemplateContainerVolumeMount": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "Path within the container at which the volume should be mounted. Must not contain ':'. For Cloud SQL volumes, it can be left empty, or must otherwise be /cloudsql. All instances defined in the Volume will be available as /cloudsql/[instance]. For more information on Cloud SQL volumes, visit https://cloud.google.com/sql/docs/mysql/connect-run\n"
                },
                "name": {
                    "type": "string",
                    "description": "This must match the Name of a Volume.\n"
                },
                "subPath": {
                    "type": "string",
                    "description": "Path within the volume from which the container's volume should be mounted.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "name"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateNodeSelector:WorkerPoolTemplateNodeSelector": {
            "properties": {
                "accelerator": {
                    "type": "string",
                    "description": "The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/services/gpu for configuring GPU.\n"
                }
            },
            "type": "object",
            "required": [
                "accelerator"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVolume:WorkerPoolTemplateVolume": {
            "properties": {
                "cloudSqlInstance": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVolumeCloudSqlInstance:WorkerPoolTemplateVolumeCloudSqlInstance",
                    "description": "For Cloud SQL volumes, contains the specific instances that should be mounted. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run.\nStructure is documented below.\n"
                },
                "emptyDir": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVolumeEmptyDir:WorkerPoolTemplateVolumeEmptyDir",
                    "description": "Ephemeral storage used as a shared volume.\nStructure is documented below.\n"
                },
                "gcs": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVolumeGcs:WorkerPoolTemplateVolumeGcs",
                    "description": "Cloud Storage bucket mounted as a volume using GCSFuse. This feature is only supported in the gen2 execution environment.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Volume's name.\n"
                },
                "nfs": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVolumeNfs:WorkerPoolTemplateVolumeNfs",
                    "description": "Represents an NFS mount.\nStructure is documented below.\n"
                },
                "secret": {
                    "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVolumeSecret:WorkerPoolTemplateVolumeSecret",
                    "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVolumeCloudSqlInstance:WorkerPoolTemplateVolumeCloudSqlInstance": {
            "properties": {
                "instances": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Cloud SQL instance connection names, as can be found in https://console.cloud.google.com/sql/instances. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run. Format: {project}:{location}:{instance}\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVolumeEmptyDir:WorkerPoolTemplateVolumeEmptyDir": {
            "properties": {
                "medium": {
                    "type": "string",
                    "description": "The different types of medium supported for EmptyDir.\nDefault value is `MEMORY`.\nPossible values are: `MEMORY`, `DISK`.\n"
                },
                "sizeLimit": {
                    "type": "string",
                    "description": "Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. This field's values are of the 'Quantity' k8s type: https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVolumeGcs:WorkerPoolTemplateVolumeGcs": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "GCS Bucket name\n"
                },
                "mountOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of flags to pass to the gcsfuse command for configuring this volume.\nFlags should be passed without leading dashes.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the GCS bucket as read-only\n"
                }
            },
            "type": "object",
            "required": [
                "bucket"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVolumeNfs:WorkerPoolTemplateVolumeNfs": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path that is exported by the NFS server.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the NFS volume as read only\n"
                },
                "server": {
                    "type": "string",
                    "description": "Hostname or IP address of the NFS server\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "server"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVolumeSecret:WorkerPoolTemplateVolumeSecret": {
            "properties": {
                "defaultMode": {
                    "type": "integer",
                    "description": "Integer representation of mode bits to use on created files by default. Must be a value between 0000 and 0777 (octal), defaulting to 0444. Directories within the path are not affected by this setting.\n"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVolumeSecretItem:WorkerPoolTemplateVolumeSecretItem"
                    },
                    "description": "If unspecified, the volume will expose a file whose name is the secret, relative to VolumeMount.mount_path. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a path and a version.\nStructure is documented below.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secret} if the secret is in the same project. projects/{project}/secrets/{secret} if the secret is in a different project.\n"
                }
            },
            "type": "object",
            "required": [
                "secret"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVolumeSecretItem:WorkerPoolTemplateVolumeSecretItem": {
            "properties": {
                "mode": {
                    "type": "integer",
                    "description": "Integer octal mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume's default mode will be used.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The relative path of the secret in the container.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version\n"
                }
            },
            "type": "object",
            "required": [
                "path"
            ]
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVpcAccess:WorkerPoolTemplateVpcAccess": {
            "properties": {
                "connector": {
                    "type": "string",
                    "description": "VPC Access connector name. Format: projects/{project}/locations/{location}/connectors/{connector}, where {project} can be project id or number.\n"
                },
                "egress": {
                    "type": "string",
                    "description": "Traffic VPC egress settings.\nPossible values are: `ALL_TRAFFIC`, `PRIVATE_RANGES_ONLY`.\n"
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/WorkerPoolTemplateVpcAccessNetworkInterface:WorkerPoolTemplateVpcAccessNetworkInterface"
                    },
                    "description": "Direct VPC egress settings. Currently only single network interface is supported.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "egress"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolTemplateVpcAccessNetworkInterface:WorkerPoolTemplateVpcAccessNetworkInterface": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "The VPC network that the Cloud Run resource will be able to send traffic to. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If network is not specified, it will be\nlooked up from the subnetwork.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The VPC subnetwork that the Cloud Run resource will get IPs from. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the\nsubnetwork with the same name with the network will be used.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags applied to this Cloud Run WorkerPool.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "network",
                        "subnetwork"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/WorkerPoolTerminalCondition:WorkerPoolTerminalCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "(Output)\nLast time the condition transitioned from one status to another.\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nHuman readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nA common (workerPool-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "(Output)\nA reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "(Output)\nHow to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nThe allocation type for this instance split.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "executionReason",
                        "lastTransitionTime",
                        "message",
                        "reason",
                        "revisionReason",
                        "severity",
                        "state",
                        "type"
                    ]
                }
            }
        },
        "gcp:cloudrunv2/getJobBinaryAuthorization:getJobBinaryAuthorization": {
            "properties": {
                "breakglassJustification": {
                    "type": "string",
                    "description": "If present, indicates to use Breakglass using this justification. If useDefault is False, then it must be empty. For more information on breakglass, see https://cloud.google.com/binary-authorization/docs/using-breakglass\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The path to a binary authorization policy. Format: projects/{project}/platforms/cloudRun/{policy-name}\n"
                },
                "useDefault": {
                    "type": "boolean",
                    "description": "If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled.\n"
                }
            },
            "type": "object",
            "required": [
                "breakglassJustification",
                "policy",
                "useDefault"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobCondition:getJobCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "A reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "Last time the condition transitioned from one status to another.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "Human readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A common (service-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "A reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "How to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * \"Ready\": True when the Resource is ready.\n"
                }
            },
            "type": "object",
            "required": [
                "executionReason",
                "lastTransitionTime",
                "message",
                "reason",
                "revisionReason",
                "severity",
                "state",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobLatestCreatedExecution:getJobLatestCreatedExecution": {
            "properties": {
                "completionTime": {
                    "type": "string",
                    "description": "Completion timestamp of the execution.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "createTime": {
                    "type": "string",
                    "description": "Creation timestamp of the execution.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Job.\n"
                }
            },
            "type": "object",
            "required": [
                "completionTime",
                "createTime",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplate:getJobTemplate": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects.\n\nCloud Run API v2 does not support annotations with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected.\nAll system annotations in v1 now have a corresponding field in v2 ExecutionTemplate.\n\nThis field follows Kubernetes annotations' namespacing, limits, and rules.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter,\nor break down billing charges by team, component, environment, state, etc. For more information, visit https://docs.cloud.google.com/resource-manager/docs/creating-managing-labels or\nhttps://cloud.google.com/run/docs/configuring/labels.\n\nCloud Run API v2 does not support labels with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 ExecutionTemplate.\n"
                },
                "parallelism": {
                    "type": "integer",
                    "description": "Specifies the maximum desired number of tasks the execution should run at given time. Must be \u003c= taskCount. When the job is run, if this field is 0 or unset, the maximum possible value will be used for that execution. The actual number of tasks running in steady state will be less than this number when there are fewer tasks waiting to be completed remaining, i.e. when the work left to do is less than max parallelism.\n"
                },
                "taskCount": {
                    "type": "integer",
                    "description": "Specifies the desired number of tasks the execution should run. Setting to 1 means that parallelism is limited to 1 and the success of that task signals the success of the execution. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/\n"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplate:getJobTemplateTemplate"
                    },
                    "description": "Describes the task(s) that will be created when executing an execution\n"
                }
            },
            "type": "object",
            "required": [
                "annotations",
                "labels",
                "parallelism",
                "taskCount",
                "templates"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplate:getJobTemplateTemplate": {
            "properties": {
                "containers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainer:getJobTemplateTemplateContainer"
                    },
                    "description": "Holds the single container that defines the unit of execution for this task.\n"
                },
                "encryptionKey": {
                    "type": "string",
                    "description": "A reference to a customer managed encryption key (CMEK) to use to encrypt this container image. For more information, go to https://cloud.google.com/run/docs/securing/using-cmek\n"
                },
                "executionEnvironment": {
                    "type": "string",
                    "description": "The execution environment being used to host this Task. Possible values: [\"EXECUTION_ENVIRONMENT_GEN1\", \"EXECUTION_ENVIRONMENT_GEN2\"]\n"
                },
                "gpuZonalRedundancyDisabled": {
                    "type": "boolean",
                    "description": "True if GPU zonal redundancy is disabled on this execution.\n"
                },
                "maxRetries": {
                    "type": "integer",
                    "description": "Number of retries allowed per Task, before marking this Task failed. Defaults to 3. Minimum value is 0.\n"
                },
                "nodeSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateNodeSelector:getJobTemplateTemplateNodeSelector"
                    },
                    "description": "Node Selector describes the hardware requirements of the resources.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Email address of the IAM service account associated with the Task of a Job. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project's default service account.\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Max allowed time duration the Task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout.\n\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVolume:getJobTemplateTemplateVolume"
                    },
                    "description": "A list of Volumes to make available to containers.\n"
                },
                "vpcAccesses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVpcAccess:getJobTemplateTemplateVpcAccess"
                    },
                    "description": "VPC Access configuration to use for this Task. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc.\n"
                }
            },
            "type": "object",
            "required": [
                "containers",
                "encryptionKey",
                "executionEnvironment",
                "gpuZonalRedundancyDisabled",
                "maxRetries",
                "nodeSelectors",
                "serviceAccount",
                "timeout",
                "volumes",
                "vpcAccesses"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainer:getJobTemplateTemplateContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references are not supported in Cloud Run.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n"
                },
                "dependsOns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of the containers that must start before this container.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerEnv:getJobTemplateTemplateContainerEnv"
                    },
                    "description": "List of environment variables to set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "URL of the Container image in Google Container Registry or Google Artifact Registry. More info: https://kubernetes.io/docs/concepts/containers/images\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Job.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerPort:getJobTemplateTemplateContainerPort"
                    },
                    "description": "List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible.\n\nIf omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerResource:getJobTemplateTemplateContainerResource"
                    },
                    "description": "Compute Resource requirements by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n"
                },
                "startupProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbe:getJobTemplateTemplateContainerStartupProbe"
                    },
                    "description": "Startup probe of application within the container.\nAll other probes are disabled if a startup probe is provided, until it\nsucceeds. Container will not be added to service endpoints if the probe fails.\n"
                },
                "volumeMounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerVolumeMount:getJobTemplateTemplateContainerVolumeMount"
                    },
                    "description": "Volume to mount into the container's filesystem.\n"
                },
                "workingDir": {
                    "type": "string",
                    "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image.\n"
                }
            },
            "type": "object",
            "required": [
                "args",
                "commands",
                "dependsOns",
                "envs",
                "image",
                "name",
                "ports",
                "resources",
                "startupProbes",
                "volumeMounts",
                "workingDir"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerEnv:getJobTemplateTemplateContainerEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Job.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Literal value of the environment variable. Defaults to \"\" and the maximum allowed length is 32768 characters. Variable references are not supported in Cloud Run.\n"
                },
                "valueSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerEnvValueSource:getJobTemplateTemplateContainerEnvValueSource"
                    },
                    "description": "Source for the environment variable's value.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value",
                "valueSources"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerEnvValueSource:getJobTemplateTemplateContainerEnvValueSource": {
            "properties": {
                "secretKeyReves": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerEnvValueSourceSecretKeyRef:getJobTemplateTemplateContainerEnvValueSourceSecretKeyRef"
                    },
                    "description": "Selects a secret and a specific version from Cloud Secret Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "secretKeyReves"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerEnvValueSourceSecretKeyRef:getJobTemplateTemplateContainerEnvValueSourceSecretKeyRef": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secretName} if the secret is in the same project. projects/{project}/secrets/{secretName} if the secret is in a different project.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version.\n"
                }
            },
            "type": "object",
            "required": [
                "secret",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerPort:getJobTemplateTemplateContainerPort": {
            "properties": {
                "containerPort": {
                    "type": "integer",
                    "description": "Port number the container listens on. This must be a valid TCP port number, 0 \u003c containerPort \u003c 65536.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Job.\n"
                }
            },
            "type": "object",
            "required": [
                "containerPort",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerResource:getJobTemplateTemplateContainerResource": {
            "properties": {
                "limits": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Only memory, CPU, and nvidia.com/gpu are supported. Use key 'cpu' for CPU limit, 'memory' for memory limit, 'nvidia.com/gpu' for gpu limit. Note: The only supported values for CPU are '1', '2', '4', '6', and '8'. Setting 4 CPU requires at least 2Gi of memory, setting 6 or more CPU requires at least 4Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                }
            },
            "type": "object",
            "required": [
                "limits"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbe:getJobTemplateTemplateContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbeGrpc:getJobTemplateTemplateContainerStartupProbeGrpc"
                    },
                    "description": "GRPC specifies an action involving a GRPC port.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbeHttpGet:getJobTemplateTemplateContainerStartupProbeHttpGet"
                    },
                    "description": "HttpGet specifies the http request to perform.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is\ninitiated.\nDefaults to 0 seconds. Minimum value is 0. Maximum value is 240.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1. Maximum value is 240.\n"
                },
                "tcpSockets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbeTcpSocket:getJobTemplateTemplateContainerStartupProbeTcpSocket"
                    },
                    "description": "TcpSocket specifies an action involving a TCP port.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1. Maximum value is 3600.\nMust be smaller than periodSeconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "initialDelaySeconds",
                "periodSeconds",
                "tcpSockets",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbeGrpc:getJobTemplateTemplateContainerStartupProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbeHttpGet:getJobTemplateTemplateContainerStartupProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbeHttpGetHttpHeader:getJobTemplateTemplateContainerStartupProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "httpHeaders",
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbeHttpGetHttpHeader:getJobTemplateTemplateContainerStartupProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Job.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerStartupProbeTcpSocket:getJobTemplateTemplateContainerStartupProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateContainerVolumeMount:getJobTemplateTemplateContainerVolumeMount": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "Path within the container at which the volume should be mounted. Must not contain ':'. For Cloud SQL volumes, it can be left empty, or must otherwise be /cloudsql. All instances defined in the Volume will be available as /cloudsql/[instance]. For more information on Cloud SQL volumes, visit https://cloud.google.com/sql/docs/mysql/connect-run\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Job.\n"
                },
                "subPath": {
                    "type": "string",
                    "description": "Path within the volume from which the container's volume should be mounted.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "name",
                "subPath"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateNodeSelector:getJobTemplateTemplateNodeSelector": {
            "properties": {
                "accelerator": {
                    "type": "string",
                    "description": "The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/jobs/gpu for configuring GPU.\n"
                }
            },
            "type": "object",
            "required": [
                "accelerator"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVolume:getJobTemplateTemplateVolume": {
            "properties": {
                "cloudSqlInstances": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVolumeCloudSqlInstance:getJobTemplateTemplateVolumeCloudSqlInstance"
                    },
                    "description": "For Cloud SQL volumes, contains the specific instances that should be mounted. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run.\n"
                },
                "emptyDirs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVolumeEmptyDir:getJobTemplateTemplateVolumeEmptyDir"
                    },
                    "description": "Ephemeral storage used as a shared volume.\n"
                },
                "gcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVolumeGc:getJobTemplateTemplateVolumeGc"
                    },
                    "description": "Cloud Storage bucket mounted as a volume using GCSFuse.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Job.\n"
                },
                "nfs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVolumeNf:getJobTemplateTemplateVolumeNf"
                    },
                    "description": "NFS share mounted as a volume.\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVolumeSecret:getJobTemplateTemplateVolumeSecret"
                    },
                    "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n"
                }
            },
            "type": "object",
            "required": [
                "cloudSqlInstances",
                "emptyDirs",
                "gcs",
                "name",
                "nfs",
                "secrets"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVolumeCloudSqlInstance:getJobTemplateTemplateVolumeCloudSqlInstance": {
            "properties": {
                "instances": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Cloud SQL instance connection names, as can be found in https://console.cloud.google.com/sql/instances. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run. Format: {project}:{location}:{instance}\n"
                }
            },
            "type": "object",
            "required": [
                "instances"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVolumeEmptyDir:getJobTemplateTemplateVolumeEmptyDir": {
            "properties": {
                "medium": {
                    "type": "string",
                    "description": "The different types of medium supported for EmptyDir. Default value: \"MEMORY\" Possible values: [\"MEMORY\", \"DISK\"]\n"
                },
                "sizeLimit": {
                    "type": "string",
                    "description": "Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. This field's values are of the 'Quantity' k8s type: https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir.\n"
                }
            },
            "type": "object",
            "required": [
                "medium",
                "sizeLimit"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVolumeGc:getJobTemplateTemplateVolumeGc": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Name of the cloud storage bucket to back the volume. The resource service account must have permission to access the bucket.\n"
                },
                "mountOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of flags to pass to the gcsfuse command for configuring this volume.\nFlags should be passed without leading dashes.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount this volume as read-only in all mounts. If false, mount this volume as read-write.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "mountOptions",
                "readOnly"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVolumeNf:getJobTemplateTemplateVolumeNf": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path that is exported by the NFS server.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount this volume as read-only in all mounts.\n"
                },
                "server": {
                    "type": "string",
                    "description": "Hostname or IP address of the NFS server.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "readOnly",
                "server"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVolumeSecret:getJobTemplateTemplateVolumeSecret": {
            "properties": {
                "defaultMode": {
                    "type": "integer",
                    "description": "Integer representation of mode bits to use on created files by default. Must be a value between 0000 and 0777 (octal), defaulting to 0444. Directories within the path are not affected by this setting.\n"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVolumeSecretItem:getJobTemplateTemplateVolumeSecretItem"
                    },
                    "description": "If unspecified, the volume will expose a file whose name is the secret, relative to VolumeMount.mount_path. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a path and a version.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secret} if the secret is in the same project. projects/{project}/secrets/{secret} if the secret is in a different project.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultMode",
                "items",
                "secret"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVolumeSecretItem:getJobTemplateTemplateVolumeSecretItem": {
            "properties": {
                "mode": {
                    "type": "integer",
                    "description": "Integer octal mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume's default mode will be used.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The relative path of the secret in the container.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version\n"
                }
            },
            "type": "object",
            "required": [
                "mode",
                "path",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVpcAccess:getJobTemplateTemplateVpcAccess": {
            "properties": {
                "connector": {
                    "type": "string",
                    "description": "VPC Access connector name. Format: projects/{project}/locations/{location}/connectors/{connector}, where {project} can be project id or number.\n"
                },
                "egress": {
                    "type": "string",
                    "description": "Traffic VPC egress settings. Possible values: [\"ALL_TRAFFIC\", \"PRIVATE_RANGES_ONLY\"]\n"
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getJobTemplateTemplateVpcAccessNetworkInterface:getJobTemplateTemplateVpcAccessNetworkInterface"
                    },
                    "description": "Direct VPC egress settings. Currently only single network interface is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "connector",
                "egress",
                "networkInterfaces"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTemplateTemplateVpcAccessNetworkInterface:getJobTemplateTemplateVpcAccessNetworkInterface": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "The VPC network that the Cloud Run resource will be able to send traffic to. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If network is not specified, it will be\nlooked up from the subnetwork.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The VPC subnetwork that the Cloud Run resource will get IPs from. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the\nsubnetwork with the same name with the network will be used.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags applied to this Cloud Run job.\n"
                }
            },
            "type": "object",
            "required": [
                "network",
                "subnetwork",
                "tags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getJobTerminalCondition:getJobTerminalCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "A reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "Last time the condition transitioned from one status to another.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "Human readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A common (service-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "A reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "How to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * \"Ready\": True when the Resource is ready.\n"
                }
            },
            "type": "object",
            "required": [
                "executionReason",
                "lastTransitionTime",
                "message",
                "reason",
                "revisionReason",
                "severity",
                "state",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceBinaryAuthorization:getServiceBinaryAuthorization": {
            "properties": {
                "breakglassJustification": {
                    "type": "string",
                    "description": "If present, indicates to use Breakglass using this justification. If useDefault is False, then it must be empty. For more information on breakglass, see https://cloud.google.com/binary-authorization/docs/using-breakglass\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The path to a binary authorization policy. Format: projects/{project}/platforms/cloudRun/{policy-name}\n"
                },
                "useDefault": {
                    "type": "boolean",
                    "description": "If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled.\n"
                }
            },
            "type": "object",
            "required": [
                "breakglassJustification",
                "policy",
                "useDefault"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceBuildConfig:getServiceBuildConfig": {
            "properties": {
                "baseImage": {
                    "type": "string",
                    "description": "The base image used to build the function.\n"
                },
                "enableAutomaticUpdates": {
                    "type": "boolean",
                    "description": "Sets whether the function will receive automatic base image updates.\n"
                },
                "environmentVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "User-provided build-time environment variables for the function.\n"
                },
                "functionTarget": {
                    "type": "string",
                    "description": "The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix, if not specified. For backward compatibility, if function with given name is not found, then the system will try to use function named \"function\".\n"
                },
                "imageUri": {
                    "type": "string",
                    "description": "Artifact Registry URI to store the built image.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Service.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Service account to be used for building the container. The format of this field is 'projects/{projectId}/serviceAccounts/{serviceAccountEmail}'.\n"
                },
                "sourceLocation": {
                    "type": "string",
                    "description": "The Cloud Storage bucket URI where the function source code is located.\n"
                },
                "workerPool": {
                    "type": "string",
                    "description": "Name of the Cloud Build Custom Worker Pool that should be used to build the Cloud Run function. The format of this field is 'projects/{project}/locations/{region}/workerPools/{workerPool}' where {project} and {region} are the project id and region respectively where the worker pool is defined and {workerPool} is the short name of the worker pool.\n"
                }
            },
            "type": "object",
            "required": [
                "baseImage",
                "enableAutomaticUpdates",
                "environmentVariables",
                "functionTarget",
                "imageUri",
                "name",
                "serviceAccount",
                "sourceLocation",
                "workerPool"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceCondition:getServiceCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "A reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "Last time the condition transitioned from one status to another.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "Human readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A common (service-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "A reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "How to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * \"Ready\": True when the Resource is ready.\n"
                }
            },
            "type": "object",
            "required": [
                "executionReason",
                "lastTransitionTime",
                "message",
                "reason",
                "revisionReason",
                "severity",
                "state",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceMultiRegionSetting:getServiceMultiRegionSetting": {
            "properties": {
                "multiRegionId": {
                    "type": "string",
                    "description": "System-generated unique id for the multi-region Service.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of regions to deploy the multi-region Service.\n"
                }
            },
            "type": "object",
            "required": [
                "multiRegionId",
                "regions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceScaling:getServiceScaling": {
            "properties": {
                "manualInstanceCount": {
                    "type": "integer",
                    "description": "Total instance count for the service in manual scaling mode. This number of instances is divided among all revisions with specified traffic based on the percent of traffic they are receiving.\n"
                },
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "Combined maximum number of instances for all revisions receiving traffic.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "Minimum number of instances for the service, to be divided among all revisions receiving traffic.\n"
                },
                "scalingMode": {
                    "type": "string",
                    "description": "The [scaling mode](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services#scalingmode) for the service. Possible values: [\"AUTOMATIC\", \"MANUAL\"]\n"
                }
            },
            "type": "object",
            "required": [
                "manualInstanceCount",
                "maxInstanceCount",
                "minInstanceCount",
                "scalingMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplate:getServiceTemplate": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects.\n\nCloud Run API v2 does not support annotations with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected.\nAll system annotations in v1 now have a corresponding field in v2 RevisionTemplate.\n\nThis field follows Kubernetes annotations' namespacing, limits, and rules.\n"
                },
                "containers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainer:getServiceTemplateContainer"
                    },
                    "description": "Holds the containers that define the unit of execution for this Service.\n"
                },
                "encryptionKey": {
                    "type": "string",
                    "description": "A reference to a customer managed encryption key (CMEK) to use to encrypt this container image. For more information, go to https://cloud.google.com/run/docs/securing/using-cmek\n"
                },
                "executionEnvironment": {
                    "type": "string",
                    "description": "The sandbox environment to host this Revision. Possible values: [\"EXECUTION_ENVIRONMENT_GEN1\", \"EXECUTION_ENVIRONMENT_GEN2\"]\n"
                },
                "gpuZonalRedundancyDisabled": {
                    "type": "boolean",
                    "description": "True if GPU zonal redundancy is disabled on this revision.\n"
                },
                "healthCheckDisabled": {
                    "type": "boolean",
                    "description": "Disables health checking containers during deployment.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component, environment, state, etc.\nFor more information, visit https://docs.cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\n\nCloud Run API v2 does not support labels with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 RevisionTemplate.\n"
                },
                "maxInstanceRequestConcurrency": {
                    "type": "integer",
                    "description": "Sets the maximum number of requests that each serving instance can receive.\nIf not specified or 0, defaults to 80 when requested CPU \u003e= 1 and defaults to 1 when requested CPU \u003c 1.\n"
                },
                "nodeSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateNodeSelector:getServiceTemplateNodeSelector"
                    },
                    "description": "Node Selector describes the hardware requirements of the resources.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The unique name for the revision. If this field is omitted, it will be automatically generated based on the Service name.\n"
                },
                "scalings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateScaling:getServiceTemplateScaling"
                    },
                    "description": "Scaling settings for this Revision.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Email address of the IAM service account associated with the revision of the service. The service account represents the identity of the running revision, and determines what permissions the revision has. If not provided, the revision will use the project's default service account.\n"
                },
                "serviceMeshes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateServiceMesh:getServiceTemplateServiceMesh"
                    },
                    "description": "Enables Cloud Service Mesh for this Revision.\n"
                },
                "sessionAffinity": {
                    "type": "boolean",
                    "description": "Enables session affinity. For more information, go to https://cloud.google.com/run/docs/configuring/session-affinity\n"
                },
                "timeout": {
                    "type": "string",
                    "description": "Max allowed time for an instance to respond to a request.\n\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVolume:getServiceTemplateVolume"
                    },
                    "description": "A list of Volumes to make available to containers.\n"
                },
                "vpcAccesses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVpcAccess:getServiceTemplateVpcAccess"
                    },
                    "description": "VPC Access configuration to use for this Task. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc.\n"
                }
            },
            "type": "object",
            "required": [
                "annotations",
                "containers",
                "encryptionKey",
                "executionEnvironment",
                "gpuZonalRedundancyDisabled",
                "healthCheckDisabled",
                "labels",
                "maxInstanceRequestConcurrency",
                "nodeSelectors",
                "revision",
                "scalings",
                "serviceAccount",
                "serviceMeshes",
                "sessionAffinity",
                "timeout",
                "volumes",
                "vpcAccesses"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainer:getServiceTemplateContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references are not supported in Cloud Run.\n"
                },
                "baseImageUri": {
                    "type": "string",
                    "description": "Base image for this container. If set, it indicates that the service is enrolled into automatic base image update.\n"
                },
                "buildInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerBuildInfo:getServiceTemplateContainerBuildInfo"
                    },
                    "description": "The build info of the container image.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n"
                },
                "dependsOns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Containers which should be started before this container. If specified the container will wait to start until all containers with the listed names are healthy.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerEnv:getServiceTemplateContainerEnv"
                    },
                    "description": "List of environment variables to set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "URL of the Container image in Google Container Registry or Google Artifact Registry. More info: https://kubernetes.io/docs/concepts/containers/images\n"
                },
                "livenessProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerLivenessProbe:getServiceTemplateContainerLivenessProbe"
                    },
                    "description": "Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Service.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerPort:getServiceTemplateContainerPort"
                    },
                    "description": "List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible.\n\nIf omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on\n"
                },
                "readinessProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerReadinessProbe:getServiceTemplateContainerReadinessProbe"
                    },
                    "description": "Periodic probe of container readiness.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerResource:getServiceTemplateContainerResource"
                    },
                    "description": "Compute Resource requirements by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n"
                },
                "sourceCodes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerSourceCode:getServiceTemplateContainerSourceCode"
                    },
                    "description": "Location of the source.\n"
                },
                "startupProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerStartupProbe:getServiceTemplateContainerStartupProbe"
                    },
                    "description": "Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                },
                "volumeMounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerVolumeMount:getServiceTemplateContainerVolumeMount"
                    },
                    "description": "Volume to mount into the container's filesystem.\n"
                },
                "workingDir": {
                    "type": "string",
                    "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image.\n"
                }
            },
            "type": "object",
            "required": [
                "args",
                "baseImageUri",
                "buildInfos",
                "commands",
                "dependsOns",
                "envs",
                "image",
                "livenessProbes",
                "name",
                "ports",
                "readinessProbes",
                "resources",
                "sourceCodes",
                "startupProbes",
                "volumeMounts",
                "workingDir"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerBuildInfo:getServiceTemplateContainerBuildInfo": {
            "properties": {
                "functionTarget": {
                    "type": "string",
                    "description": "Entry point of the function when the image is a Cloud Run function.\n"
                },
                "sourceLocation": {
                    "type": "string",
                    "description": "Source code location of the image.\n"
                }
            },
            "type": "object",
            "required": [
                "functionTarget",
                "sourceLocation"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerEnv:getServiceTemplateContainerEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Service.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Literal value of the environment variable. Defaults to \"\" and the maximum allowed length is 32768 characters. Variable references are not supported in Cloud Run.\n"
                },
                "valueSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerEnvValueSource:getServiceTemplateContainerEnvValueSource"
                    },
                    "description": "Source for the environment variable's value.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value",
                "valueSources"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerEnvValueSource:getServiceTemplateContainerEnvValueSource": {
            "properties": {
                "secretKeyReves": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerEnvValueSourceSecretKeyRef:getServiceTemplateContainerEnvValueSourceSecretKeyRef"
                    },
                    "description": "Selects a secret and a specific version from Cloud Secret Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "secretKeyReves"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerEnvValueSourceSecretKeyRef:getServiceTemplateContainerEnvValueSourceSecretKeyRef": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secretName} if the secret is in the same project. projects/{project}/secrets/{secretName} if the secret is in a different project.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version.\n"
                }
            },
            "type": "object",
            "required": [
                "secret",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerLivenessProbe:getServiceTemplateContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerLivenessProbeGrpc:getServiceTemplateContainerLivenessProbeGrpc"
                    },
                    "description": "GRPC specifies an action involving a GRPC port.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerLivenessProbeHttpGet:getServiceTemplateContainerLivenessProbeHttpGet"
                    },
                    "description": "HTTPGet specifies the http request to perform.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeoutSeconds\n"
                },
                "tcpSockets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerLivenessProbeTcpSocket:getServiceTemplateContainerLivenessProbeTcpSocket"
                    },
                    "description": "TCPSocketAction describes an action based on opening a socket\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than periodSeconds. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "initialDelaySeconds",
                "periodSeconds",
                "tcpSockets",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerLivenessProbeGrpc:getServiceTemplateContainerLivenessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerLivenessProbeHttpGet:getServiceTemplateContainerLivenessProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerLivenessProbeHttpGetHttpHeader:getServiceTemplateContainerLivenessProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. Defaults to '/'.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "httpHeaders",
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerLivenessProbeHttpGetHttpHeader:getServiceTemplateContainerLivenessProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Service.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerLivenessProbeTcpSocket:getServiceTemplateContainerLivenessProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Must be in the range 1 to 65535.\nIf not specified, defaults to the exposed port of the container, which\nis the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerPort:getServiceTemplateContainerPort": {
            "properties": {
                "containerPort": {
                    "type": "integer",
                    "description": "Port number the container listens on. This must be a valid TCP port number, 0 \u003c containerPort \u003c 65536.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Service.\n"
                }
            },
            "type": "object",
            "required": [
                "containerPort",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerReadinessProbe:getServiceTemplateContainerReadinessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after\nhaving succeeded. Defaults to 3.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerReadinessProbeGrpc:getServiceTemplateContainerReadinessProbeGrpc"
                    },
                    "description": "GRPC specifies an action involving a GRPC port.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerReadinessProbeHttpGet:getServiceTemplateContainerReadinessProbeHttpGet"
                    },
                    "description": "HttpGet specifies the http request to perform.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe.\nDefault to 10 seconds.\n"
                },
                "successThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 2.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out.\nDefaults to 1 second. Must be smaller than period_seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "periodSeconds",
                "successThreshold",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerReadinessProbeGrpc:getServiceTemplateContainerReadinessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerReadinessProbeHttpGet:getServiceTemplateContainerReadinessProbeHttpGet": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. If set, it should not be empty string.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerResource:getServiceTemplateContainerResource": {
            "properties": {
                "cpuIdle": {
                    "type": "boolean",
                    "description": "Determines whether CPU is only allocated during requests. True by default if the parent 'resources' field is not set. However, if\n'resources' is set, this field must be explicitly set to true to preserve the default behavior.\n"
                },
                "limits": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Only memory, CPU, and nvidia.com/gpu are supported. Use key 'cpu' for CPU limit, 'memory' for memory limit, 'nvidia.com/gpu' for gpu limit. Note: The only supported values for CPU are '1', '2', '4', '6' and '8'. Setting 4 CPU requires at least 2Gi of memory, setting 6 or more CPU requires at least 4Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                },
                "startupCpuBoost": {
                    "type": "boolean",
                    "description": "Determines whether CPU should be boosted on startup of a new container instance above the requested CPU threshold, this can help reduce cold-start latency.\n"
                }
            },
            "type": "object",
            "required": [
                "cpuIdle",
                "limits",
                "startupCpuBoost"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerSourceCode:getServiceTemplateContainerSourceCode": {
            "properties": {
                "cloudStorageSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerSourceCodeCloudStorageSource:getServiceTemplateContainerSourceCodeCloudStorageSource"
                    },
                    "description": "Cloud Storage source.\n"
                }
            },
            "type": "object",
            "required": [
                "cloudStorageSources"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerSourceCodeCloudStorageSource:getServiceTemplateContainerSourceCodeCloudStorageSource": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The Cloud Storage bucket name.\n"
                },
                "generation": {
                    "type": "string",
                    "description": "The Cloud Storage object generation. The is an int64 value. As with most Google APIs, its JSON representation will be a string instead of an integer.\n"
                },
                "object": {
                    "type": "string",
                    "description": "The Cloud Storage object name.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "generation",
                "object"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerStartupProbe:getServiceTemplateContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerStartupProbeGrpc:getServiceTemplateContainerStartupProbeGrpc"
                    },
                    "description": "GRPC specifies an action involving a GRPC port.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerStartupProbeHttpGet:getServiceTemplateContainerStartupProbeHttpGet"
                    },
                    "description": "HTTPGet specifies the http request to perform. Exactly one of HTTPGet or TCPSocket must be specified.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeoutSeconds\n"
                },
                "tcpSockets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerStartupProbeTcpSocket:getServiceTemplateContainerStartupProbeTcpSocket"
                    },
                    "description": "TCPSocket specifies an action involving a TCP port. Exactly one of HTTPGet or TCPSocket must be specified.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than periodSeconds. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "initialDelaySeconds",
                "periodSeconds",
                "tcpSockets",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerStartupProbeGrpc:getServiceTemplateContainerStartupProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Number must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\nIf this is not specified, the default behavior is defined by gRPC.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerStartupProbeHttpGet:getServiceTemplateContainerStartupProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateContainerStartupProbeHttpGetHttpHeader:getServiceTemplateContainerStartupProbeHttpGetHttpHeader"
                    },
                    "description": "Custom headers to set in the request. HTTP allows repeated headers.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to access on the HTTP server. Defaults to '/'.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "httpHeaders",
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerStartupProbeHttpGetHttpHeader:getServiceTemplateContainerStartupProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Service.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The header field value\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerStartupProbeTcpSocket:getServiceTemplateContainerStartupProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port number to access on the container. Must be in the range 1 to 65535.\nIf not specified, defaults to the same value as container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateContainerVolumeMount:getServiceTemplateContainerVolumeMount": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "Path within the container at which the volume should be mounted. Must not contain ':'. For Cloud SQL volumes, it can be left empty, or must otherwise be /cloudsql. All instances defined in the Volume will be available as /cloudsql/[instance]. For more information on Cloud SQL volumes, visit https://cloud.google.com/sql/docs/mysql/connect-run\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Service.\n"
                },
                "subPath": {
                    "type": "string",
                    "description": "Path within the volume from which the container's volume should be mounted.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "name",
                "subPath"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateNodeSelector:getServiceTemplateNodeSelector": {
            "properties": {
                "accelerator": {
                    "type": "string",
                    "description": "The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/services/gpu for configuring GPU.\n"
                }
            },
            "type": "object",
            "required": [
                "accelerator"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateScaling:getServiceTemplateScaling": {
            "properties": {
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "Maximum number of serving instances that this resource should have. Must not be less than minimum instance count. If absent, Cloud Run will calculate\na default value based on the project's available container instances quota in the region and specified instance size.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "Minimum number of serving instances that this resource should have. Defaults to 0. Must not be greater than maximum instance count.\n"
                }
            },
            "type": "object",
            "required": [
                "maxInstanceCount",
                "minInstanceCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateServiceMesh:getServiceTemplateServiceMesh": {
            "properties": {
                "mesh": {
                    "type": "string",
                    "description": "The Mesh resource name. For more information see https://cloud.google.com/service-mesh/docs/reference/network-services/rest/v1/projects.locations.meshes#resource:-mesh.\n"
                }
            },
            "type": "object",
            "required": [
                "mesh"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVolume:getServiceTemplateVolume": {
            "properties": {
                "cloudSqlInstances": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVolumeCloudSqlInstance:getServiceTemplateVolumeCloudSqlInstance"
                    },
                    "description": "For Cloud SQL volumes, contains the specific instances that should be mounted. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run.\n"
                },
                "emptyDirs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVolumeEmptyDir:getServiceTemplateVolumeEmptyDir"
                    },
                    "description": "Ephemeral storage used as a shared volume.\n"
                },
                "gcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVolumeGc:getServiceTemplateVolumeGc"
                    },
                    "description": "Cloud Storage bucket mounted as a volume using GCSFuse. This feature is only supported in the gen2 execution environment.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Service.\n"
                },
                "nfs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVolumeNf:getServiceTemplateVolumeNf"
                    },
                    "description": "Represents an NFS mount.\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVolumeSecret:getServiceTemplateVolumeSecret"
                    },
                    "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n"
                }
            },
            "type": "object",
            "required": [
                "cloudSqlInstances",
                "emptyDirs",
                "gcs",
                "name",
                "nfs",
                "secrets"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVolumeCloudSqlInstance:getServiceTemplateVolumeCloudSqlInstance": {
            "properties": {
                "instances": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Cloud SQL instance connection names, as can be found in https://console.cloud.google.com/sql/instances. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run. Format: {project}:{location}:{instance}\n"
                }
            },
            "type": "object",
            "required": [
                "instances"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVolumeEmptyDir:getServiceTemplateVolumeEmptyDir": {
            "properties": {
                "medium": {
                    "type": "string",
                    "description": "The different types of medium supported for EmptyDir. Default value: \"MEMORY\" Possible values: [\"MEMORY\", \"DISK\"]\n"
                },
                "sizeLimit": {
                    "type": "string",
                    "description": "Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. This field's values are of the 'Quantity' k8s type: https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir.\n"
                }
            },
            "type": "object",
            "required": [
                "medium",
                "sizeLimit"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVolumeGc:getServiceTemplateVolumeGc": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "GCS Bucket name\n"
                },
                "mountOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of flags to pass to the gcsfuse command for configuring this volume.\nFlags should be passed without leading dashes.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the GCS bucket as read-only\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "mountOptions",
                "readOnly"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVolumeNf:getServiceTemplateVolumeNf": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path that is exported by the NFS server.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the NFS volume as read only\n"
                },
                "server": {
                    "type": "string",
                    "description": "Hostname or IP address of the NFS server\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "readOnly",
                "server"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVolumeSecret:getServiceTemplateVolumeSecret": {
            "properties": {
                "defaultMode": {
                    "type": "integer",
                    "description": "Integer representation of mode bits to use on created files by default. Must be a value between 0000 and 0777 (octal), defaulting to 0444. Directories within the path are not affected by this setting.\n"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVolumeSecretItem:getServiceTemplateVolumeSecretItem"
                    },
                    "description": "If unspecified, the volume will expose a file whose name is the secret, relative to VolumeMount.mount_path. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a path and a version.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secret} if the secret is in the same project. projects/{project}/secrets/{secret} if the secret is in a different project.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultMode",
                "items",
                "secret"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVolumeSecretItem:getServiceTemplateVolumeSecretItem": {
            "properties": {
                "mode": {
                    "type": "integer",
                    "description": "Integer octal mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume's default mode will be used.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The relative path of the secret in the container.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version\n"
                }
            },
            "type": "object",
            "required": [
                "mode",
                "path",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVpcAccess:getServiceTemplateVpcAccess": {
            "properties": {
                "connector": {
                    "type": "string",
                    "description": "VPC Access connector name. Format: projects/{project}/locations/{location}/connectors/{connector}, where {project} can be project id or number.\n"
                },
                "egress": {
                    "type": "string",
                    "description": "Traffic VPC egress settings. Possible values: [\"ALL_TRAFFIC\", \"PRIVATE_RANGES_ONLY\"]\n"
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getServiceTemplateVpcAccessNetworkInterface:getServiceTemplateVpcAccessNetworkInterface"
                    },
                    "description": "Direct VPC egress settings. Currently only single network interface is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "connector",
                "egress",
                "networkInterfaces"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTemplateVpcAccessNetworkInterface:getServiceTemplateVpcAccessNetworkInterface": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "The VPC network that the Cloud Run resource will be able to send traffic to. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If network is not specified, it will be\nlooked up from the subnetwork.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The VPC subnetwork that the Cloud Run resource will get IPs from. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the\nsubnetwork with the same name with the network will be used.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags applied to this Cloud Run service.\n"
                }
            },
            "type": "object",
            "required": [
                "network",
                "subnetwork",
                "tags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTerminalCondition:getServiceTerminalCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "A reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "Last time the condition transitioned from one status to another.\n"
                },
                "message": {
                    "type": "string",
                    "description": "Human readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A common (service-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "A reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "How to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * \"Ready\": True when the Resource is ready.\n"
                }
            },
            "type": "object",
            "required": [
                "executionReason",
                "lastTransitionTime",
                "message",
                "reason",
                "revisionReason",
                "severity",
                "state",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTraffic:getServiceTraffic": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "Specifies percent of the traffic to this Revision. This defaults to zero if unspecified.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "Revision to which to send this portion of traffic, if traffic allocation is by revision.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Indicates a string to be part of the URI to exclusively reference this target.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The allocation type for this traffic target. Possible values: [\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\", \"TRAFFIC_TARGET_ALLOCATION_TYPE_REVISION\"]\n"
                }
            },
            "type": "object",
            "required": [
                "percent",
                "revision",
                "tag",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getServiceTrafficStatus:getServiceTrafficStatus": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "Specifies percent of the traffic to this Revision.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "Revision to which this traffic is sent.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "Indicates the string used in the URI to exclusively reference this target.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The allocation type for this traffic target.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "Displays the target URI.\n"
                }
            },
            "type": "object",
            "required": [
                "percent",
                "revision",
                "tag",
                "type",
                "uri"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolBinaryAuthorization:getWorkerPoolBinaryAuthorization": {
            "properties": {
                "breakglassJustification": {
                    "type": "string",
                    "description": "If present, indicates to use Breakglass using this justification. If useDefault is False, then it must be empty. For more information on breakglass, see https://cloud.google.com/binary-authorization/docs/using-breakglass\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The path to a binary authorization policy. Format: projects/{project}/platforms/cloudRun/{policy-name}\n"
                },
                "useDefault": {
                    "type": "boolean",
                    "description": "If True, indicates to use the default project's binary authorization policy. If False, binary authorization will be disabled.\n"
                }
            },
            "type": "object",
            "required": [
                "breakglassJustification",
                "policy",
                "useDefault"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolCondition:getWorkerPoolCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "A reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "Last time the condition transitioned from one status to another.\n\nA timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".\n"
                },
                "message": {
                    "type": "string",
                    "description": "Human readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A common (workerPool-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "A reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "How to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * \"Ready\": True when the Resource is ready.\n"
                }
            },
            "type": "object",
            "required": [
                "executionReason",
                "lastTransitionTime",
                "message",
                "reason",
                "revisionReason",
                "severity",
                "state",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolInstanceSplit:getWorkerPoolInstanceSplit": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "Specifies percent of the instance split to this Revision. This defaults to zero if unspecified.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "Revision to which to assign this portion of instances, if split allocation is by revision.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The allocation type for this instance split. Possible values: [\"INSTANCE_SPLIT_ALLOCATION_TYPE_LATEST\", \"INSTANCE_SPLIT_ALLOCATION_TYPE_REVISION\"]\n"
                }
            },
            "type": "object",
            "required": [
                "percent",
                "revision",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolInstanceSplitStatus:getWorkerPoolInstanceSplitStatus": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "Specifies percent of the instance split to this Revision.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "Revision to which this instance split is assigned.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The allocation type for this instance split.\n"
                }
            },
            "type": "object",
            "required": [
                "percent",
                "revision",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolScaling:getWorkerPoolScaling": {
            "properties": {
                "manualInstanceCount": {
                    "type": "integer",
                    "description": "The total number of instances in manual scaling mode.\n"
                },
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "The maximum count of instances distributed among revisions based on the specified instance split percentages.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "The minimum count of instances distributed among revisions based on the specified instance split percentages.\n"
                },
                "scalingMode": {
                    "type": "string",
                    "description": "The scaling mode for the worker pool. It defaults to MANUAL. Possible values: [\"AUTOMATIC\", \"MANUAL\"]\n"
                }
            },
            "type": "object",
            "required": [
                "manualInstanceCount",
                "maxInstanceCount",
                "minInstanceCount",
                "scalingMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplate:getWorkerPoolTemplate": {
            "properties": {
                "annotations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that may be set by external tools to store and arbitrary metadata. They are not queryable and should be preserved when modifying objects.\n\nCloud Run API v2 does not support annotations with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected.\nAll system annotations in v1 now have a corresponding field in v2 WorkerPoolRevisionTemplate.\n\nThis field follows Kubernetes annotations' namespacing, limits, and rules.\n"
                },
                "client": {
                    "type": "string",
                    "description": "Arbitrary identifier for the API client.\n"
                },
                "clientVersion": {
                    "type": "string",
                    "description": "Arbitrary version identifier for the API client.\n"
                },
                "containers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainer:getWorkerPoolTemplateContainer"
                    },
                    "description": "Holds the containers that define the unit of execution for this WorkerPool.\n"
                },
                "encryptionKey": {
                    "type": "string",
                    "description": "A reference to a customer managed encryption key (CMEK) to use to encrypt this container image. For more information, go to https://cloud.google.com/run/docs/securing/using-cmek\n"
                },
                "encryptionKeyRevocationAction": {
                    "type": "string",
                    "description": "The action to take if the encryption key is revoked. Possible values: [\"PREVENT_NEW\", \"SHUTDOWN\"]\n"
                },
                "encryptionKeyShutdownDuration": {
                    "type": "string",
                    "description": "If encryptionKeyRevocationAction is SHUTDOWN, the duration before shutting down all instances. The minimum increment is 1 hour.\n\nA duration in seconds with up to nine fractional digits, ending with 's'. Example: \"3.5s\".\n"
                },
                "gpuZonalRedundancyDisabled": {
                    "type": "boolean",
                    "description": "True if GPU zonal redundancy is disabled on this revision.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Unstructured key value map that can be used to organize and categorize objects. User-provided labels are shared with Google's billing system, so they can be used to filter, or break down billing charges by team, component, environment, state, etc.\nFor more information, visit https://docs.cloud.google.com/resource-manager/docs/creating-managing-labels or https://cloud.google.com/run/docs/configuring/labels.\n\nCloud Run API v2 does not support labels with 'run.googleapis.com', 'cloud.googleapis.com', 'serving.knative.dev', or 'autoscaling.knative.dev' namespaces, and they will be rejected.\nAll system labels in v1 now have a corresponding field in v2 WorkerPoolRevisionTemplate.\n"
                },
                "nodeSelectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateNodeSelector:getWorkerPoolTemplateNodeSelector"
                    },
                    "description": "Node Selector describes the hardware requirements of the resources.\n"
                },
                "revision": {
                    "type": "string",
                    "description": "The unique name for the revision. If this field is omitted, it will be automatically generated based on the WorkerPool name.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "Email address of the IAM service account associated with the revision of the WorkerPool. The service account represents the identity of the running revision, and determines what permissions the revision has. If not provided, the revision will use the project's default service account.\n"
                },
                "volumes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVolume:getWorkerPoolTemplateVolume"
                    },
                    "description": "A list of Volumes to make available to containers.\n"
                },
                "vpcAccesses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVpcAccess:getWorkerPoolTemplateVpcAccess"
                    },
                    "description": "VPC Access configuration to use for this Revision. For more information, visit https://cloud.google.com/run/docs/configuring/connecting-vpc.\n"
                }
            },
            "type": "object",
            "required": [
                "annotations",
                "client",
                "clientVersion",
                "containers",
                "encryptionKey",
                "encryptionKeyRevocationAction",
                "encryptionKeyShutdownDuration",
                "gpuZonalRedundancyDisabled",
                "labels",
                "nodeSelectors",
                "revision",
                "serviceAccount",
                "volumes",
                "vpcAccesses"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainer:getWorkerPoolTemplateContainer": {
            "properties": {
                "args": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references are not supported in Cloud Run.\n"
                },
                "commands": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n"
                },
                "dependsOns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of the containers that must start before this container.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerEnv:getWorkerPoolTemplateContainerEnv"
                    },
                    "description": "List of environment variables to set in the container.\n"
                },
                "image": {
                    "type": "string",
                    "description": "URL of the Container image in Google Container Registry or Google Artifact Registry. More info: https://kubernetes.io/docs/concepts/containers/images\n"
                },
                "livenessProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbe:getWorkerPoolTemplateContainerLivenessProbe"
                    },
                    "description": "Periodic probe of container liveness. Container will be restarted if the probe fails.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Worker Pool.\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerResource:getWorkerPoolTemplateContainerResource"
                    },
                    "description": "Compute Resource requirements by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources\n"
                },
                "startupProbes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbe:getWorkerPoolTemplateContainerStartupProbe"
                    },
                    "description": "Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails.\n"
                },
                "volumeMounts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerVolumeMount:getWorkerPoolTemplateContainerVolumeMount"
                    },
                    "description": "Volume to mount into the container's filesystem.\n"
                },
                "workingDir": {
                    "type": "string",
                    "description": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image.\n"
                }
            },
            "type": "object",
            "required": [
                "args",
                "commands",
                "dependsOns",
                "envs",
                "image",
                "livenessProbes",
                "name",
                "resources",
                "startupProbes",
                "volumeMounts",
                "workingDir"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerEnv:getWorkerPoolTemplateContainerEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Worker Pool.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Literal value of the environment variable. Defaults to \"\" and the maximum allowed length is 32768 characters. Variable references are not supported in Cloud Run.\n"
                },
                "valueSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerEnvValueSource:getWorkerPoolTemplateContainerEnvValueSource"
                    },
                    "description": "Source for the environment variable's value.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value",
                "valueSources"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerEnvValueSource:getWorkerPoolTemplateContainerEnvValueSource": {
            "properties": {
                "secretKeyReves": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerEnvValueSourceSecretKeyRef:getWorkerPoolTemplateContainerEnvValueSourceSecretKeyRef"
                    },
                    "description": "Selects a secret and a specific version from Cloud Secret Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "secretKeyReves"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerEnvValueSourceSecretKeyRef:getWorkerPoolTemplateContainerEnvValueSourceSecretKeyRef": {
            "properties": {
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secretName} if the secret is in the same project. projects/{project}/secrets/{secretName} if the secret is in a different project.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version.\n"
                }
            },
            "type": "object",
            "required": [
                "secret",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbe:getWorkerPoolTemplateContainerLivenessProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Optional. Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbeGrpc:getWorkerPoolTemplateContainerLivenessProbeGrpc"
                    },
                    "description": "Optional. GRPC specifies an action involving a gRPC port. Exactly one of httpGet, tcpSocket, or grpc must be specified.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbeHttpGet:getWorkerPoolTemplateContainerLivenessProbeHttpGet"
                    },
                    "description": "Optional. HTTPGet specifies the http request to perform. Exactly one of httpGet, tcpSocket, or grpc must be specified.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Optional. Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "Optional. How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.\n"
                },
                "tcpSockets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbeTcpSocket:getWorkerPoolTemplateContainerLivenessProbeTcpSocket"
                    },
                    "description": "Optional. TCPSocket specifies an action involving a TCP port. Exactly one of httpGet, tcpSocket, or grpc must be specified.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Optional. Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "initialDelaySeconds",
                "periodSeconds",
                "tcpSockets",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbeGrpc:getWorkerPoolTemplateContainerLivenessProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number of the gRPC service. Number must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Optional. Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md ). If this is not specified, the default behavior is defined by gRPC\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbeHttpGet:getWorkerPoolTemplateContainerLivenessProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbeHttpGetHttpHeader:getWorkerPoolTemplateContainerLivenessProbeHttpGetHttpHeader"
                    },
                    "description": "Optional. Custom headers to set in the request. HTTP allows repeated headers.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Optional. Path to access on the HTTP server. Defaults to '/'.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number to access on the container. Must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "httpHeaders",
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbeHttpGetHttpHeader:getWorkerPoolTemplateContainerLivenessProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Worker Pool.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Required. The header field name\n"
                },
                "value": {
                    "type": "string",
                    "description": "Optional. The header field value\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerLivenessProbeTcpSocket:getWorkerPoolTemplateContainerLivenessProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number to access on the container. Must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerResource:getWorkerPoolTemplateContainerResource": {
            "properties": {
                "limits": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Only memory, CPU, and nvidia.com/gpu are supported. Use key 'cpu' for CPU limit, 'memory' for memory limit, 'nvidia.com/gpu' for gpu limit. Note: The only supported values for CPU are '1', '2', '4', '6', and '8'. Setting 4 CPU requires at least 2Gi of memory, setting 6 or more CPU requires at least 4Gi of memory. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go\n"
                }
            },
            "type": "object",
            "required": [
                "limits"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbe:getWorkerPoolTemplateContainerStartupProbe": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "Optional. Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.\n"
                },
                "grpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbeGrpc:getWorkerPoolTemplateContainerStartupProbeGrpc"
                    },
                    "description": "Optional. GRPC specifies an action involving a gRPC port. Exactly one of httpGet, tcpSocket, or grpc must be specified.\n"
                },
                "httpGets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbeHttpGet:getWorkerPoolTemplateContainerStartupProbeHttpGet"
                    },
                    "description": "Optional. HTTPGet specifies the http request to perform. Exactly one of httpGet, tcpSocket, or grpc must be specified.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "Optional. Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "Optional. How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.\n"
                },
                "tcpSockets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbeTcpSocket:getWorkerPoolTemplateContainerStartupProbeTcpSocket"
                    },
                    "description": "Optional. TCPSocket specifies an action involving a TCP port. Exactly one of httpGet, tcpSocket, or grpc must be specified.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Optional. Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds.\n"
                }
            },
            "type": "object",
            "required": [
                "failureThreshold",
                "grpcs",
                "httpGets",
                "initialDelaySeconds",
                "periodSeconds",
                "tcpSockets",
                "timeoutSeconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbeGrpc:getWorkerPoolTemplateContainerStartupProbeGrpc": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number of the gRPC service. Number must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Optional. Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md ). If this is not specified, the default behavior is defined by gRPC\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbeHttpGet:getWorkerPoolTemplateContainerStartupProbeHttpGet": {
            "properties": {
                "httpHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbeHttpGetHttpHeader:getWorkerPoolTemplateContainerStartupProbeHttpGetHttpHeader"
                    },
                    "description": "Optional. Custom headers to set in the request. HTTP allows repeated headers.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Optional. Path to access on the HTTP server. Defaults to '/'.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number to access on the container. Must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "httpHeaders",
                "path",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbeHttpGetHttpHeader:getWorkerPoolTemplateContainerStartupProbeHttpGetHttpHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Worker Pool.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Required. The header field name\n"
                },
                "value": {
                    "type": "string",
                    "description": "Optional. The header field value\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerStartupProbeTcpSocket:getWorkerPoolTemplateContainerStartupProbeTcpSocket": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Optional. Port number to access on the container. Must be in the range 1 to 65535. If not specified, defaults to the exposed port of the container, which is the value of container.ports[0].containerPort.\n"
                }
            },
            "type": "object",
            "required": [
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateContainerVolumeMount:getWorkerPoolTemplateContainerVolumeMount": {
            "properties": {
                "mountPath": {
                    "type": "string",
                    "description": "Path within the container at which the volume should be mounted. Must not contain ':'. For Cloud SQL volumes, it can be left empty, or must otherwise be /cloudsql. All instances defined in the Volume will be available as /cloudsql/[instance]. For more information on Cloud SQL volumes, visit https://cloud.google.com/sql/docs/mysql/connect-run\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Worker Pool.\n"
                },
                "subPath": {
                    "type": "string",
                    "description": "Path within the volume from which the container's volume should be mounted.\n"
                }
            },
            "type": "object",
            "required": [
                "mountPath",
                "name",
                "subPath"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateNodeSelector:getWorkerPoolTemplateNodeSelector": {
            "properties": {
                "accelerator": {
                    "type": "string",
                    "description": "The GPU to attach to an instance. See https://cloud.google.com/run/docs/configuring/services/gpu for configuring GPU.\n"
                }
            },
            "type": "object",
            "required": [
                "accelerator"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVolume:getWorkerPoolTemplateVolume": {
            "properties": {
                "cloudSqlInstances": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVolumeCloudSqlInstance:getWorkerPoolTemplateVolumeCloudSqlInstance"
                    },
                    "description": "For Cloud SQL volumes, contains the specific instances that should be mounted. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run.\n"
                },
                "emptyDirs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVolumeEmptyDir:getWorkerPoolTemplateVolumeEmptyDir"
                    },
                    "description": "Ephemeral storage used as a shared volume.\n"
                },
                "gcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVolumeGc:getWorkerPoolTemplateVolumeGc"
                    },
                    "description": "Cloud Storage bucket mounted as a volume using GCSFuse. This feature is only supported in the gen2 execution environment.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Cloud Run v2 Worker Pool.\n"
                },
                "nfs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVolumeNf:getWorkerPoolTemplateVolumeNf"
                    },
                    "description": "Represents an NFS mount.\n"
                },
                "secrets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVolumeSecret:getWorkerPoolTemplateVolumeSecret"
                    },
                    "description": "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n"
                }
            },
            "type": "object",
            "required": [
                "cloudSqlInstances",
                "emptyDirs",
                "gcs",
                "name",
                "nfs",
                "secrets"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVolumeCloudSqlInstance:getWorkerPoolTemplateVolumeCloudSqlInstance": {
            "properties": {
                "instances": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The Cloud SQL instance connection names, as can be found in https://console.cloud.google.com/sql/instances. Visit https://cloud.google.com/sql/docs/mysql/connect-run for more information on how to connect Cloud SQL and Cloud Run. Format: {project}:{location}:{instance}\n"
                }
            },
            "type": "object",
            "required": [
                "instances"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVolumeEmptyDir:getWorkerPoolTemplateVolumeEmptyDir": {
            "properties": {
                "medium": {
                    "type": "string",
                    "description": "The different types of medium supported for EmptyDir. Default value: \"MEMORY\" Possible values: [\"MEMORY\", \"DISK\"]\n"
                },
                "sizeLimit": {
                    "type": "string",
                    "description": "Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. This field's values are of the 'Quantity' k8s type: https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/. The default is nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir.\n"
                }
            },
            "type": "object",
            "required": [
                "medium",
                "sizeLimit"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVolumeGc:getWorkerPoolTemplateVolumeGc": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "GCS Bucket name\n"
                },
                "mountOptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of flags to pass to the gcsfuse command for configuring this volume.\nFlags should be passed without leading dashes.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the GCS bucket as read-only\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "mountOptions",
                "readOnly"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVolumeNf:getWorkerPoolTemplateVolumeNf": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Path that is exported by the NFS server.\n"
                },
                "readOnly": {
                    "type": "boolean",
                    "description": "If true, mount the NFS volume as read only\n"
                },
                "server": {
                    "type": "string",
                    "description": "Hostname or IP address of the NFS server\n"
                }
            },
            "type": "object",
            "required": [
                "path",
                "readOnly",
                "server"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVolumeSecret:getWorkerPoolTemplateVolumeSecret": {
            "properties": {
                "defaultMode": {
                    "type": "integer",
                    "description": "Integer representation of mode bits to use on created files by default. Must be a value between 0000 and 0777 (octal), defaulting to 0444. Directories within the path are not affected by this setting.\n"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVolumeSecretItem:getWorkerPoolTemplateVolumeSecretItem"
                    },
                    "description": "If unspecified, the volume will expose a file whose name is the secret, relative to VolumeMount.mount_path. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a path and a version.\n"
                },
                "secret": {
                    "type": "string",
                    "description": "The name of the secret in Cloud Secret Manager. Format: {secret} if the secret is in the same project. projects/{project}/secrets/{secret} if the secret is in a different project.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultMode",
                "items",
                "secret"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVolumeSecretItem:getWorkerPoolTemplateVolumeSecretItem": {
            "properties": {
                "mode": {
                    "type": "integer",
                    "description": "Integer octal mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume's default mode will be used.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The relative path of the secret in the container.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version\n"
                }
            },
            "type": "object",
            "required": [
                "mode",
                "path",
                "version"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVpcAccess:getWorkerPoolTemplateVpcAccess": {
            "properties": {
                "connector": {
                    "type": "string",
                    "description": "VPC Access connector name. Format: projects/{project}/locations/{location}/connectors/{connector}, where {project} can be project id or number.\n"
                },
                "egress": {
                    "type": "string",
                    "description": "Traffic VPC egress settings. Possible values: [\"ALL_TRAFFIC\", \"PRIVATE_RANGES_ONLY\"]\n"
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudrunv2/getWorkerPoolTemplateVpcAccessNetworkInterface:getWorkerPoolTemplateVpcAccessNetworkInterface"
                    },
                    "description": "Direct VPC egress settings. Currently only single network interface is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "connector",
                "egress",
                "networkInterfaces"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTemplateVpcAccessNetworkInterface:getWorkerPoolTemplateVpcAccessNetworkInterface": {
            "properties": {
                "network": {
                    "type": "string",
                    "description": "The VPC network that the Cloud Run resource will be able to send traffic to. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If network is not specified, it will be\nlooked up from the subnetwork.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The VPC subnetwork that the Cloud Run resource will get IPs from. At least one of network or subnetwork must be specified. If both\nnetwork and subnetwork are specified, the given VPC subnetwork must belong to the given VPC network. If subnetwork is not specified, the\nsubnetwork with the same name with the network will be used.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Network tags applied to this Cloud Run WorkerPool.\n"
                }
            },
            "type": "object",
            "required": [
                "network",
                "subnetwork",
                "tags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudrunv2/getWorkerPoolTerminalCondition:getWorkerPoolTerminalCondition": {
            "properties": {
                "executionReason": {
                    "type": "string",
                    "description": "A reason for the execution condition.\n"
                },
                "lastTransitionTime": {
                    "type": "string",
                    "description": "Last time the condition transitioned from one status to another.\n"
                },
                "message": {
                    "type": "string",
                    "description": "Human readable message indicating details about the current status.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "A common (workerPool-level) reason for this condition.\n"
                },
                "revisionReason": {
                    "type": "string",
                    "description": "A reason for the revision condition.\n"
                },
                "severity": {
                    "type": "string",
                    "description": "How to interpret failures of this condition, one of Error, Warning, Info\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the condition.\n"
                },
                "type": {
                    "type": "string",
                    "description": "type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types common to all resources include: * \"Ready\": True when the Resource is ready.\n"
                }
            },
            "type": "object",
            "required": [
                "executionReason",
                "lastTransitionTime",
                "message",
                "reason",
                "revisionReason",
                "severity",
                "state",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:cloudscheduler/JobAppEngineHttpTarget:JobAppEngineHttpTarget": {
            "properties": {
                "appEngineRouting": {
                    "$ref": "#/types/gcp:cloudscheduler/JobAppEngineHttpTargetAppEngineRouting:JobAppEngineHttpTargetAppEngineRouting",
                    "description": "App Engine Routing setting for the job.\nStructure is documented below.\n"
                },
                "body": {
                    "type": "string",
                    "description": "HTTP request body.\nA request body is allowed only if the HTTP method is POST or PUT.\nIt will result in invalid argument error to set a body on a job with an incompatible HttpMethod.\nA base64-encoded string.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "HTTP request headers.\nThis map contains the header field names and values.\nHeaders can be set when the job is created.\n"
                },
                "httpMethod": {
                    "type": "string",
                    "description": "Which HTTP method to use for the request.\n"
                },
                "relativeUri": {
                    "type": "string",
                    "description": "The relative URI.\nThe relative URL must begin with \"/\" and must be a valid HTTP relative URL.\nIt can contain a path, query string arguments, and \\# fragments.\nIf the relative URL is empty, then the root path \"/\" will be used.\nNo spaces are allowed, and the maximum length allowed is 2083 characters\n"
                }
            },
            "type": "object",
            "required": [
                "relativeUri"
            ]
        },
        "gcp:cloudscheduler/JobAppEngineHttpTargetAppEngineRouting:JobAppEngineHttpTargetAppEngineRouting": {
            "properties": {
                "instance": {
                    "type": "string",
                    "description": "App instance.\nBy default, the job is sent to an instance which is available when the job is attempted.\n"
                },
                "service": {
                    "type": "string",
                    "description": "App service.\nBy default, the job is sent to the service which is the default service when the job is attempted.\n"
                },
                "version": {
                    "type": "string",
                    "description": "App version.\nBy default, the job is sent to the version which is the default version when the job is attempted.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudscheduler/JobHttpTarget:JobHttpTarget": {
            "properties": {
                "body": {
                    "type": "string",
                    "description": "HTTP request body.\nA request body is allowed only if the HTTP method is POST, PUT, or PATCH.\nIt is an error to set body on a job with an incompatible HttpMethod.\nA base64-encoded string.\n"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "This map contains the header field names and values.\nRepeated headers are not supported, but a header value can contain commas.\n"
                },
                "httpMethod": {
                    "type": "string",
                    "description": "Which HTTP method to use for the request.\n"
                },
                "oauthToken": {
                    "$ref": "#/types/gcp:cloudscheduler/JobHttpTargetOauthToken:JobHttpTargetOauthToken",
                    "description": "Contains information needed for generating an OAuth token.\nThis type of authorization should be used when sending requests to a GCP endpoint.\nStructure is documented below.\n"
                },
                "oidcToken": {
                    "$ref": "#/types/gcp:cloudscheduler/JobHttpTargetOidcToken:JobHttpTargetOidcToken",
                    "description": "Contains information needed for generating an OpenID Connect token.\nThis type of authorization should be used when sending requests to third party endpoints or Cloud Run.\nStructure is documented below.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The full URI path that the request will be sent to.\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ]
        },
        "gcp:cloudscheduler/JobHttpTargetOauthToken:JobHttpTargetOauthToken": {
            "properties": {
                "scope": {
                    "type": "string",
                    "description": "OAuth scope to be used for generating OAuth access token. If not specified,\n\"https://www.googleapis.com/auth/cloud-platform\" will be used.\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "Service account email to be used for generating OAuth token.\nThe service account must be within the same project as the job.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccountEmail"
            ]
        },
        "gcp:cloudscheduler/JobHttpTargetOidcToken:JobHttpTargetOidcToken": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience to be used when generating OIDC token. If not specified,\nthe URI specified in target will be used.\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "Service account email to be used for generating OAuth token.\nThe service account must be within the same project as the job.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccountEmail"
            ]
        },
        "gcp:cloudscheduler/JobPubsubTarget:JobPubsubTarget": {
            "properties": {
                "attributes": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Attributes for PubsubMessage.\nPubsub message must contain either non-empty data, or at least one attribute.\n"
                },
                "data": {
                    "type": "string",
                    "description": "The message payload for PubsubMessage.\nPubsub message must contain either non-empty data, or at least one attribute.\nA base64-encoded string.\n"
                },
                "topicName": {
                    "type": "string",
                    "description": "The full resource name for the Cloud Pub/Sub topic to which\nmessages will be published when a job is delivered. ~\u003e**NOTE:**\nThe topic name must be in the same format as required by PubSub's\nPublishRequest.name, e.g. `projects/my-project/topics/my-topic`.\n"
                }
            },
            "type": "object",
            "required": [
                "topicName"
            ]
        },
        "gcp:cloudscheduler/JobRetryConfig:JobRetryConfig": {
            "properties": {
                "maxBackoffDuration": {
                    "type": "string",
                    "description": "The maximum amount of time to wait before retrying a job after it fails.\nA duration in seconds with up to nine fractional digits, terminated by 's'.\n"
                },
                "maxDoublings": {
                    "type": "integer",
                    "description": "The time between retries will double maxDoublings times.\nA job's retry interval starts at minBackoffDuration,\nthen doubles maxDoublings times, then increases linearly,\nand finally retries retries at intervals of maxBackoffDuration up to retryCount times.\n"
                },
                "maxRetryDuration": {
                    "type": "string",
                    "description": "The time limit for retrying a failed job, measured from time when an execution was first attempted.\nIf specified with retryCount, the job will be retried until both limits are reached.\nA duration in seconds with up to nine fractional digits, terminated by 's'.\n"
                },
                "minBackoffDuration": {
                    "type": "string",
                    "description": "The minimum amount of time to wait before retrying a job after it fails.\nA duration in seconds with up to nine fractional digits, terminated by 's'.\n"
                },
                "retryCount": {
                    "type": "integer",
                    "description": "The number of attempts that the system will make to run a\njob using the exponential backoff procedure described by maxDoublings.\nValues greater than 5 and negative values are not allowed.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxBackoffDuration",
                        "maxDoublings",
                        "maxRetryDuration",
                        "minBackoffDuration",
                        "retryCount"
                    ]
                }
            }
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpec:CloudControlParameterSpec": {
            "properties": {
                "defaultValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValue:CloudControlParameterSpecDefaultValue",
                    "description": "Possible parameter value types.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the parameter. The maximum length is 2000 characters.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the parameter. The maximum length is 200 characters.\n"
                },
                "isRequired": {
                    "type": "boolean",
                    "description": "if the parameter is required\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n"
                },
                "subParameters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameter:CloudControlParameterSpecSubParameter"
                    },
                    "description": "The parameter spec of the cloud control.\nStructure is documented below.\n"
                },
                "substitutionRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubstitutionRule:CloudControlParameterSpecSubstitutionRule"
                    },
                    "description": "List of parameter substitutions.\nStructure is documented below.\n"
                },
                "validation": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidation:CloudControlParameterSpecValidation",
                    "description": "Validation of the parameter.\nStructure is documented below.\n"
                },
                "valueType": {
                    "type": "string",
                    "description": "Parameter value type.\nPossible values:\nSTRING\nBOOLEAN\nSTRINGLIST\nNUMBER\nONEOF\n"
                }
            },
            "type": "object",
            "required": [
                "isRequired",
                "name",
                "valueType"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValue:CloudControlParameterSpecDefaultValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "oneofValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValueOneofValue:CloudControlParameterSpecDefaultValueOneofValue",
                    "description": "Sub-parameter values.\nStructure is documented below.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValueStringListValue:CloudControlParameterSpecDefaultValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValueOneofValue:CloudControlParameterSpecDefaultValueOneofValue": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n"
                },
                "parameterValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValueOneofValueParameterValue:CloudControlParameterSpecDefaultValueOneofValueParameterValue",
                    "description": "The value of the parameter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValueOneofValueParameterValue:CloudControlParameterSpecDefaultValueOneofValueParameterValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValueOneofValueParameterValueStringListValue:CloudControlParameterSpecDefaultValueOneofValueParameterValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValueOneofValueParameterValueStringListValue:CloudControlParameterSpecDefaultValueOneofValueParameterValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecDefaultValueStringListValue:CloudControlParameterSpecDefaultValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameter:CloudControlParameterSpecSubParameter": {
            "properties": {
                "defaultValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValue:CloudControlParameterSpecSubParameterDefaultValue",
                    "description": "Possible parameter value types.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the parameter. The maximum length is 2000 characters.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "The display name of the parameter. The maximum length is 200 characters.\n"
                },
                "isRequired": {
                    "type": "boolean",
                    "description": "if the parameter is required\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n"
                },
                "substitutionRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterSubstitutionRule:CloudControlParameterSpecSubParameterSubstitutionRule"
                    },
                    "description": "List of parameter substitutions.\nStructure is documented below.\n"
                },
                "validation": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidation:CloudControlParameterSpecSubParameterValidation",
                    "description": "Validation of the parameter.\nStructure is documented below.\n"
                },
                "valueType": {
                    "type": "string",
                    "description": "Parameter value type.\nPossible values:\nSTRING\nBOOLEAN\nSTRINGLIST\nNUMBER\nONEOF\n"
                }
            },
            "type": "object",
            "required": [
                "isRequired",
                "name",
                "valueType"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValue:CloudControlParameterSpecSubParameterDefaultValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "oneofValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValueOneofValue:CloudControlParameterSpecSubParameterDefaultValueOneofValue",
                    "description": "Sub-parameter values.\nStructure is documented below.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValueStringListValue:CloudControlParameterSpecSubParameterDefaultValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValueOneofValue:CloudControlParameterSpecSubParameterDefaultValueOneofValue": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n"
                },
                "parameterValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValueOneofValueParameterValue:CloudControlParameterSpecSubParameterDefaultValueOneofValueParameterValue",
                    "description": "The value of the parameter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValueOneofValueParameterValue:CloudControlParameterSpecSubParameterDefaultValueOneofValueParameterValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValueOneofValueParameterValueStringListValue:CloudControlParameterSpecSubParameterDefaultValueOneofValueParameterValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValueOneofValueParameterValueStringListValue:CloudControlParameterSpecSubParameterDefaultValueOneofValueParameterValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterDefaultValueStringListValue:CloudControlParameterSpecSubParameterDefaultValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterSubstitutionRule:CloudControlParameterSpecSubParameterSubstitutionRule": {
            "properties": {
                "attributeSubstitutionRule": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterSubstitutionRuleAttributeSubstitutionRule:CloudControlParameterSpecSubParameterSubstitutionRuleAttributeSubstitutionRule",
                    "description": "Attribute at the given path is substituted entirely.\nStructure is documented below.\n"
                },
                "placeholderSubstitutionRule": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterSubstitutionRulePlaceholderSubstitutionRule:CloudControlParameterSpecSubParameterSubstitutionRulePlaceholderSubstitutionRule",
                    "description": "Placeholder is substituted in the rendered string.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterSubstitutionRuleAttributeSubstitutionRule:CloudControlParameterSpecSubParameterSubstitutionRuleAttributeSubstitutionRule": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "Fully qualified proto attribute path (in dot notation).\nExample: rules[0].cel_expression.resource_types_values\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterSubstitutionRulePlaceholderSubstitutionRule:CloudControlParameterSpecSubParameterSubstitutionRulePlaceholderSubstitutionRule": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "Fully qualified proto attribute path (e.g., dot notation)\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidation:CloudControlParameterSpecSubParameterValidation": {
            "properties": {
                "allowedValues": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValues:CloudControlParameterSpecSubParameterValidationAllowedValues",
                    "description": "Allowed set of values for the parameter.\nStructure is documented below.\n"
                },
                "intRange": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationIntRange:CloudControlParameterSpecSubParameterValidationIntRange",
                    "description": "Number range for number parameters.\nStructure is documented below.\n"
                },
                "regexpPattern": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationRegexpPattern:CloudControlParameterSpecSubParameterValidationRegexpPattern",
                    "description": "Regular Expression Validator for parameter values.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValues:CloudControlParameterSpecSubParameterValidationAllowedValues": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValue"
                    },
                    "description": "List of allowed values for the parameter.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "oneofValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValue",
                    "description": "Sub-parameter values.\nStructure is documented below.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValueStringListValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValue": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n"
                },
                "parameterValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValueParameterValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValueParameterValue",
                    "description": "The value of the parameter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValueParameterValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValueParameterValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValueParameterValueStringListValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValueParameterValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValueParameterValueStringListValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValueOneofValueParameterValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationAllowedValuesValueStringListValue:CloudControlParameterSpecSubParameterValidationAllowedValuesValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationIntRange:CloudControlParameterSpecSubParameterValidationIntRange": {
            "properties": {
                "max": {
                    "type": "string",
                    "description": "Maximum allowed value for the numeric parameter (inclusive).\n"
                },
                "min": {
                    "type": "string",
                    "description": "Minimum allowed value for the numeric parameter (inclusive).\n"
                }
            },
            "type": "object",
            "required": [
                "max",
                "min"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubParameterValidationRegexpPattern:CloudControlParameterSpecSubParameterValidationRegexpPattern": {
            "properties": {
                "pattern": {
                    "type": "string",
                    "description": "Regex Pattern to match the value(s) of parameter.\n"
                }
            },
            "type": "object",
            "required": [
                "pattern"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubstitutionRule:CloudControlParameterSpecSubstitutionRule": {
            "properties": {
                "attributeSubstitutionRule": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubstitutionRuleAttributeSubstitutionRule:CloudControlParameterSpecSubstitutionRuleAttributeSubstitutionRule",
                    "description": "Attribute at the given path is substituted entirely.\nStructure is documented below.\n"
                },
                "placeholderSubstitutionRule": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecSubstitutionRulePlaceholderSubstitutionRule:CloudControlParameterSpecSubstitutionRulePlaceholderSubstitutionRule",
                    "description": "Placeholder is substituted in the rendered string.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubstitutionRuleAttributeSubstitutionRule:CloudControlParameterSpecSubstitutionRuleAttributeSubstitutionRule": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "Fully qualified proto attribute path (in dot notation).\nExample: rules[0].cel_expression.resource_types_values\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecSubstitutionRulePlaceholderSubstitutionRule:CloudControlParameterSpecSubstitutionRulePlaceholderSubstitutionRule": {
            "properties": {
                "attribute": {
                    "type": "string",
                    "description": "Fully qualified proto attribute path (e.g., dot notation)\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidation:CloudControlParameterSpecValidation": {
            "properties": {
                "allowedValues": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValues:CloudControlParameterSpecValidationAllowedValues",
                    "description": "Allowed set of values for the parameter.\nStructure is documented below.\n"
                },
                "intRange": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationIntRange:CloudControlParameterSpecValidationIntRange",
                    "description": "Number range for number parameters.\nStructure is documented below.\n"
                },
                "regexpPattern": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationRegexpPattern:CloudControlParameterSpecValidationRegexpPattern",
                    "description": "Regular Expression Validator for parameter values.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValues:CloudControlParameterSpecValidationAllowedValues": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValue:CloudControlParameterSpecValidationAllowedValuesValue"
                    },
                    "description": "List of allowed values for the parameter.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValue:CloudControlParameterSpecValidationAllowedValuesValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "oneofValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValueOneofValue:CloudControlParameterSpecValidationAllowedValuesValueOneofValue",
                    "description": "Sub-parameter values.\nStructure is documented below.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValueStringListValue:CloudControlParameterSpecValidationAllowedValuesValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValueOneofValue:CloudControlParameterSpecValidationAllowedValuesValueOneofValue": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n"
                },
                "parameterValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValueOneofValueParameterValue:CloudControlParameterSpecValidationAllowedValuesValueOneofValueParameterValue",
                    "description": "The value of the parameter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValueOneofValueParameterValue:CloudControlParameterSpecValidationAllowedValuesValueOneofValueParameterValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValueOneofValueParameterValueStringListValue:CloudControlParameterSpecValidationAllowedValuesValueOneofValueParameterValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValueOneofValueParameterValueStringListValue:CloudControlParameterSpecValidationAllowedValuesValueOneofValueParameterValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationAllowedValuesValueStringListValue:CloudControlParameterSpecValidationAllowedValuesValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationIntRange:CloudControlParameterSpecValidationIntRange": {
            "properties": {
                "max": {
                    "type": "string",
                    "description": "Maximum allowed value for the numeric parameter (inclusive).\n"
                },
                "min": {
                    "type": "string",
                    "description": "Minimum allowed value for the numeric parameter (inclusive).\n"
                }
            },
            "type": "object",
            "required": [
                "max",
                "min"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlParameterSpecValidationRegexpPattern:CloudControlParameterSpecValidationRegexpPattern": {
            "properties": {
                "pattern": {
                    "type": "string",
                    "description": "Regex Pattern to match the value(s) of parameter.\n"
                }
            },
            "type": "object",
            "required": [
                "pattern"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlRule:CloudControlRule": {
            "properties": {
                "celExpression": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlRuleCelExpression:CloudControlRuleCelExpression",
                    "description": "A [CEL\nexpression](https://cloud.google.com/certificate-authority-service/docs/using-cel).\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Rule. The maximum length is 2000 characters.\n"
                },
                "ruleActionTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The functionality enabled by the Rule.\n"
                }
            },
            "type": "object",
            "required": [
                "ruleActionTypes"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlRuleCelExpression:CloudControlRuleCelExpression": {
            "properties": {
                "expression": {
                    "type": "string",
                    "description": "Logic expression in CEL language.\nThe max length of the condition is 1000 characters.\n"
                },
                "resourceTypesValues": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/CloudControlRuleCelExpressionResourceTypesValues:CloudControlRuleCelExpressionResourceTypesValues",
                    "description": "A list of strings.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:cloudsecuritycompliance/CloudControlRuleCelExpressionResourceTypesValues:CloudControlRuleCelExpressionResourceTypesValues": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkCloudControlDetail:FrameworkCloudControlDetail": {
            "properties": {
                "majorRevisionId": {
                    "type": "string",
                    "description": "Major revision of cloudcontrol\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the CloudControl in the format:\n\"{parent}/locations/{location}/cloudControls/{cloud-control}\"\n"
                },
                "parameters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameter:FrameworkCloudControlDetailParameter"
                    },
                    "description": "Parameters is a key-value pair that is required by the CloudControl. The\nspecification of these parameters will be present in cloudcontrol.Eg: {\n\"name\": \"location\",\"value\": \"us-west-1\"}.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "majorRevisionId",
                "name"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameter:FrameworkCloudControlDetailParameter": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n"
                },
                "parameterValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValue:FrameworkCloudControlDetailParameterParameterValue",
                    "description": "Possible parameter value types.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "parameterValue"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValue:FrameworkCloudControlDetailParameterParameterValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "oneofValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValueOneofValue:FrameworkCloudControlDetailParameterParameterValueOneofValue",
                    "description": "Sub-parameter values.\nStructure is documented below.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValueStringListValue:FrameworkCloudControlDetailParameterParameterValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValueOneofValue:FrameworkCloudControlDetailParameterParameterValueOneofValue": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n"
                },
                "parameterValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValueOneofValueParameterValue:FrameworkCloudControlDetailParameterParameterValueOneofValueParameterValue",
                    "description": "The value of the parameter.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValueOneofValueParameterValue:FrameworkCloudControlDetailParameterParameterValueOneofValueParameterValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n"
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n"
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValueOneofValueParameterValueStringListValue:FrameworkCloudControlDetailParameterParameterValueOneofValueParameterValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n"
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n"
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValueOneofValueParameterValueStringListValue:FrameworkCloudControlDetailParameterParameterValueOneofValueParameterValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkCloudControlDetailParameterParameterValueStringListValue:FrameworkCloudControlDetailParameterParameterValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n"
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlDeploymentReference:FrameworkDeploymentCloudControlDeploymentReference": {
            "properties": {
                "cloudControlDeployment": {
                    "type": "string",
                    "description": "(Output)\nThe name of the CloudControlDeployment. The format is:\n{parent}/locations/{location}/cloudControlDeployments/{cloud_control_deployment_id}\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cloudControlDeployment"
                    ]
                }
            }
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadata:FrameworkDeploymentCloudControlMetadata": {
            "properties": {
                "cloudControlDetails": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetails:FrameworkDeploymentCloudControlMetadataCloudControlDetails",
                    "description": "CloudControlDetails contains the details of a CloudControl.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "enforcementMode": {
                    "type": "string",
                    "description": "Enforcement mode for the framework deployment.\nPossible values:\nPREVENTIVE\nDETECTIVE\nAUDIT\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "cloudControlDetails",
                "enforcementMode"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetails:FrameworkDeploymentCloudControlMetadataCloudControlDetails": {
            "properties": {
                "majorRevisionId": {
                    "type": "string",
                    "description": "Major revision of cloudcontrol\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the CloudControl in the format:\n\"{parent}/locations/{location}/cloudControls/{cloud-control}\"\n",
                    "willReplaceOnChanges": true
                },
                "parameters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameter:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameter"
                    },
                    "description": "Parameters is a key-value pair that is required by the CloudControl. The\nspecification of these parameters will be present in cloudcontrol.Eg: {\n\"name\": \"location\",\"value\": \"us-west-1\"}.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "majorRevisionId",
                "name"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameter:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameter": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n",
                    "willReplaceOnChanges": true
                },
                "parameterValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValue",
                    "description": "Possible parameter value types.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "name",
                "parameterValue"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n",
                    "willReplaceOnChanges": true
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n",
                    "willReplaceOnChanges": true
                },
                "oneofValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValue",
                    "description": "Sub-parameter values.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueStringListValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValue": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the parameter.\n",
                    "willReplaceOnChanges": true
                },
                "parameterValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValueParameterValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValueParameterValue",
                    "description": "The value of the parameter.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValueParameterValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValueParameterValue": {
            "properties": {
                "boolValue": {
                    "type": "boolean",
                    "description": "Represents a boolean value.\n",
                    "willReplaceOnChanges": true
                },
                "numberValue": {
                    "type": "number",
                    "description": "Represents a double value.\n",
                    "willReplaceOnChanges": true
                },
                "stringListValue": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValueParameterValueStringListValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValueParameterValueStringListValue",
                    "description": "A list of strings.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "stringValue": {
                    "type": "string",
                    "description": "Represents a string value.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValueParameterValueStringListValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueOneofValueParameterValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueStringListValue:FrameworkDeploymentCloudControlMetadataCloudControlDetailsParameterParameterValueStringListValue": {
            "properties": {
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The strings in the list.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "values"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentFramework:FrameworkDeploymentFramework": {
            "properties": {
                "framework": {
                    "type": "string",
                    "description": "In the format:\n{parent}/locations/{location}/frameworks/{framework}\n",
                    "willReplaceOnChanges": true
                },
                "majorRevisionId": {
                    "type": "string",
                    "description": "Major revision id of the framework.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "framework",
                "majorRevisionId"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentTargetResourceConfig:FrameworkDeploymentTargetResourceConfig": {
            "properties": {
                "existingTargetResource": {
                    "type": "string",
                    "description": "CRM node in format organizations/{organization}, folders/{folder},\nor projects/{project}\n",
                    "willReplaceOnChanges": true
                },
                "targetResourceCreationConfig": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfig:FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfig",
                    "description": "TargetResourceCreationConfig contains the config to create a new resource to\nbe used as the\u003cspan pulumi-lang-nodejs=\" targetResource \" pulumi-lang-dotnet=\" TargetResource \" pulumi-lang-go=\" targetResource \" pulumi-lang-python=\" target_resource \" pulumi-lang-yaml=\" targetResource \" pulumi-lang-java=\" targetResource \" pulumi-lang-hcl=\" target_resource \"\u003e targetResource \u003c/span\u003eof a deployment.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfig:FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfig": {
            "properties": {
                "folderCreationConfig": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfigFolderCreationConfig:FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfigFolderCreationConfig",
                    "description": "FolderCreationConfig contains the config to create a new folder to be used\nas the\u003cspan pulumi-lang-nodejs=\" targetResource \" pulumi-lang-dotnet=\" TargetResource \" pulumi-lang-go=\" targetResource \" pulumi-lang-python=\" target_resource \" pulumi-lang-yaml=\" targetResource \" pulumi-lang-java=\" targetResource \" pulumi-lang-hcl=\" target_resource \"\u003e targetResource \u003c/span\u003eof a deployment.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "projectCreationConfig": {
                    "$ref": "#/types/gcp:cloudsecuritycompliance/FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfigProjectCreationConfig:FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfigProjectCreationConfig",
                    "description": "ProjectCreationConfig contains the config to create a new project to be used\nas the\u003cspan pulumi-lang-nodejs=\" targetResource \" pulumi-lang-dotnet=\" TargetResource \" pulumi-lang-go=\" targetResource \" pulumi-lang-python=\" target_resource \" pulumi-lang-yaml=\" targetResource \" pulumi-lang-java=\" targetResource \" pulumi-lang-hcl=\" target_resource \"\u003e targetResource \u003c/span\u003eof a deployment.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfigFolderCreationConfig:FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfigFolderCreationConfig": {
            "properties": {
                "folderDisplayName": {
                    "type": "string",
                    "description": "Display name of the folder to be created\n",
                    "willReplaceOnChanges": true
                },
                "parent": {
                    "type": "string",
                    "description": "The parent of the folder to be created. It can be an organizations/{org} or\nfolders/{folder}\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "folderDisplayName",
                "parent"
            ]
        },
        "gcp:cloudsecuritycompliance/FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfigProjectCreationConfig:FrameworkDeploymentTargetResourceConfigTargetResourceCreationConfigProjectCreationConfig": {
            "properties": {
                "billingAccountId": {
                    "type": "string",
                    "description": "Billing account id to be used for the project.\n",
                    "willReplaceOnChanges": true
                },
                "parent": {
                    "type": "string",
                    "description": "organizations/{org} or folders/{folder}\n",
                    "willReplaceOnChanges": true
                },
                "projectDisplayName": {
                    "type": "string",
                    "description": "Display name of the project to be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "billingAccountId",
                "parent",
                "projectDisplayName"
            ]
        },
        "gcp:cloudtasks/QueueAppEngineRoutingOverride:QueueAppEngineRoutingOverride": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "(Output)\nThe host that the task is sent to.\n"
                },
                "instance": {
                    "type": "string",
                    "description": "App instance.\nBy default, the task is sent to an instance which is available when the task is attempted.\n"
                },
                "service": {
                    "type": "string",
                    "description": "App service.\nBy default, the task is sent to the service which is the default service when the task is attempted.\n"
                },
                "version": {
                    "type": "string",
                    "description": "App version.\nBy default, the task is sent to the version which is the default version when the task is attempted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "host"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueHttpTarget:QueueHttpTarget": {
            "properties": {
                "headerOverrides": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:cloudtasks/QueueHttpTargetHeaderOverride:QueueHttpTargetHeaderOverride"
                    },
                    "description": "HTTP target headers.\nThis map contains the header field names and values.\nHeaders will be set when running the CreateTask and/or BufferTask.\nThese headers represent a subset of the headers that will be configured for the task's HTTP request.\nSome HTTP request headers will be ignored or replaced.\nHeaders which can have multiple values (according to RFC2616) can be specified using comma-separated values.\nThe size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue.\nStructure is documented below.\n"
                },
                "httpMethod": {
                    "type": "string",
                    "description": "The HTTP method to use for the request.\nWhen specified, it overrides HttpRequest for the task.\nNote that if the value is set to GET the body of the task will be ignored at execution time.\nPossible values are: `HTTP_METHOD_UNSPECIFIED`, `POST`, `GET`, `HEAD`, `PUT`, `DELETE`, `PATCH`, `OPTIONS`.\n"
                },
                "oauthToken": {
                    "$ref": "#/types/gcp:cloudtasks/QueueHttpTargetOauthToken:QueueHttpTargetOauthToken",
                    "description": "If specified, an OAuth token is generated and attached as the Authorization header in the HTTP request.\nThis type of authorization should generally be used only when calling Google APIs hosted on *.googleapis.com.\nNote that both the service account email and the scope MUST be specified when using the queue-level authorization override.\nStructure is documented below.\n"
                },
                "oidcToken": {
                    "$ref": "#/types/gcp:cloudtasks/QueueHttpTargetOidcToken:QueueHttpTargetOidcToken",
                    "description": "If specified, an OIDC token is generated and attached as an Authorization header in the HTTP request.\nThis type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.\nNote that both the service account email and the audience MUST be specified when using the queue-level authorization override.\nStructure is documented below.\n"
                },
                "uriOverride": {
                    "$ref": "#/types/gcp:cloudtasks/QueueHttpTargetUriOverride:QueueHttpTargetUriOverride",
                    "description": "URI override.\nWhen specified, overrides the execution URI for all the tasks in the queue.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "httpMethod"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueHttpTargetHeaderOverride:QueueHttpTargetHeaderOverride": {
            "properties": {
                "header": {
                    "$ref": "#/types/gcp:cloudtasks/QueueHttpTargetHeaderOverrideHeader:QueueHttpTargetHeaderOverrideHeader",
                    "description": "Header embodying a key and a value.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "header"
            ]
        },
        "gcp:cloudtasks/QueueHttpTargetHeaderOverrideHeader:QueueHttpTargetHeaderOverrideHeader": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The Key of the header.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The Value of the header.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ]
        },
        "gcp:cloudtasks/QueueHttpTargetOauthToken:QueueHttpTargetOauthToken": {
            "properties": {
                "scope": {
                    "type": "string",
                    "description": "OAuth scope to be used for generating OAuth access token.\nIf not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used.\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "Service account email to be used for generating OAuth token.\nThe service account must be within the same project as the queue.\nThe caller must have iam.serviceAccounts.actAs permission for the service account.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccountEmail"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "scope",
                        "serviceAccountEmail"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueHttpTargetOidcToken:QueueHttpTargetOidcToken": {
            "properties": {
                "audience": {
                    "type": "string",
                    "description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used.\n"
                },
                "serviceAccountEmail": {
                    "type": "string",
                    "description": "Service account email to be used for generating OIDC token.\nThe service account must be within the same project as the queue.\nThe caller must have iam.serviceAccounts.actAs permission for the service account.\n"
                }
            },
            "type": "object",
            "required": [
                "serviceAccountEmail"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "audience",
                        "serviceAccountEmail"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueHttpTargetUriOverride:QueueHttpTargetUriOverride": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "Host override.\nWhen specified, replaces the host part of the task URL.\nFor example, if the task URL is \"https://www.google.com\", and host value\nis set to \"example.net\", the overridden URI will be changed to \"https://example.net\".\nHost value cannot be an empty string (INVALID_ARGUMENT).\n"
                },
                "pathOverride": {
                    "$ref": "#/types/gcp:cloudtasks/QueueHttpTargetUriOverridePathOverride:QueueHttpTargetUriOverridePathOverride",
                    "description": "URI path.\nWhen specified, replaces the existing path of the task URL.\nSetting the path value to an empty string clears the URI path segment.\nStructure is documented below.\n"
                },
                "port": {
                    "type": "string",
                    "description": "Port override.\nWhen specified, replaces the port part of the task URI.\nFor instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo.\nNote that the port value must be a positive integer.\nSetting the port to 0 (Zero) clears the URI port.\n"
                },
                "queryOverride": {
                    "$ref": "#/types/gcp:cloudtasks/QueueHttpTargetUriOverrideQueryOverride:QueueHttpTargetUriOverrideQueryOverride",
                    "description": "URI query.\nWhen specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment.\nStructure is documented below.\n"
                },
                "scheme": {
                    "type": "string",
                    "description": "Scheme override.\nWhen specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS).\nPossible values are: `HTTP`, `HTTPS`.\n"
                },
                "uriOverrideEnforceMode": {
                    "type": "string",
                    "description": "URI Override Enforce Mode\nWhen specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS.\nPossible values are: `ALWAYS`, `IF_NOT_EXISTS`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "scheme",
                        "uriOverrideEnforceMode"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueHttpTargetUriOverridePathOverride:QueueHttpTargetUriOverridePathOverride": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "The URI path (e.g., /users/1234). Default is an empty string.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "path"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueHttpTargetUriOverrideQueryOverride:QueueHttpTargetUriOverrideQueryOverride": {
            "properties": {
                "queryParams": {
                    "type": "string",
                    "description": "The query parameters (e.g., qparam1=123\u0026qparam2=456). Default is an empty string.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "queryParams"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueIamBindingCondition:QueueIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudtasks/QueueIamMemberCondition:QueueIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:cloudtasks/QueueRateLimits:QueueRateLimits": {
            "properties": {
                "maxBurstSize": {
                    "type": "integer",
                    "description": "(Output)\nThe max burst size.\nMax burst size limits how fast tasks in queue are processed when many tasks are\nin the queue and the rate is high. This field allows the queue to have a high\nrate so processing starts shortly after a task is enqueued, but still limits\nresource usage when many tasks are enqueued in a short period of time.\n"
                },
                "maxConcurrentDispatches": {
                    "type": "integer",
                    "description": "The maximum number of concurrent tasks that Cloud Tasks allows to\nbe dispatched for this queue. After this threshold has been\nreached, Cloud Tasks stops dispatching tasks until the number of\nconcurrent requests decreases.\n"
                },
                "maxDispatchesPerSecond": {
                    "type": "number",
                    "description": "The maximum rate at which tasks are dispatched from this queue.\nIf unspecified when the queue is created, Cloud Tasks will pick the default.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxBurstSize",
                        "maxConcurrentDispatches",
                        "maxDispatchesPerSecond"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueRetryConfig:QueueRetryConfig": {
            "properties": {
                "maxAttempts": {
                    "type": "integer",
                    "description": "Number of attempts per task.\nCloud Tasks will attempt the task maxAttempts times (that is, if\nthe first attempt fails, then there will be maxAttempts - 1\nretries). Must be \u003e= -1.\nIf unspecified when the queue is created, Cloud Tasks will pick\nthe default.\n-1 indicates unlimited attempts.\n"
                },
                "maxBackoff": {
                    "type": "string",
                    "description": "A task will be scheduled for retry between minBackoff and\nmaxBackoff duration after it fails, if the queue's RetryConfig\nspecifies that the task should be retried.\n"
                },
                "maxDoublings": {
                    "type": "integer",
                    "description": "The time between retries will double maxDoublings times.\nA task's retry interval starts at minBackoff, then doubles maxDoublings times,\nthen increases linearly, and finally retries retries at intervals of maxBackoff\nup to maxAttempts times.\n"
                },
                "maxRetryDuration": {
                    "type": "string",
                    "description": "If positive, maxRetryDuration specifies the time limit for\nretrying a failed task, measured from when the task was first\nattempted. Once maxRetryDuration time has passed and the task has\nbeen attempted maxAttempts times, no further attempts will be\nmade and the task will be deleted.\nIf zero, then the task age is unlimited.\n"
                },
                "minBackoff": {
                    "type": "string",
                    "description": "A task will be scheduled for retry between minBackoff and\nmaxBackoff duration after it fails, if the queue's RetryConfig\nspecifies that the task should be retried.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxAttempts",
                        "maxBackoff",
                        "maxDoublings",
                        "maxRetryDuration",
                        "minBackoff"
                    ]
                }
            }
        },
        "gcp:cloudtasks/QueueStackdriverLoggingConfig:QueueStackdriverLoggingConfig": {
            "properties": {
                "samplingRatio": {
                    "type": "number",
                    "description": "Specifies the fraction of operations to write to Stackdriver Logging.\nThis field may contain any value between 0.0 and 1.0, inclusive. 0.0 is the\ndefault and means that no operations are logged.\n"
                }
            },
            "type": "object",
            "required": [
                "samplingRatio"
            ]
        },
        "gcp:colab/NotebookExecutionCustomEnvironmentSpec:NotebookExecutionCustomEnvironmentSpec": {
            "properties": {
                "machineSpec": {
                    "$ref": "#/types/gcp:colab/NotebookExecutionCustomEnvironmentSpecMachineSpec:NotebookExecutionCustomEnvironmentSpecMachineSpec",
                    "description": "'The machine configuration of the runtime.'\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "networkSpec": {
                    "$ref": "#/types/gcp:colab/NotebookExecutionCustomEnvironmentSpecNetworkSpec:NotebookExecutionCustomEnvironmentSpecNetworkSpec",
                    "description": "The network configuration for the runtime.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "persistentDiskSpec": {
                    "$ref": "#/types/gcp:colab/NotebookExecutionCustomEnvironmentSpecPersistentDiskSpec:NotebookExecutionCustomEnvironmentSpecPersistentDiskSpec",
                    "description": "The configuration for the data disk of the runtime.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:colab/NotebookExecutionCustomEnvironmentSpecMachineSpec:NotebookExecutionCustomEnvironmentSpecMachineSpec": {
            "properties": {
                "acceleratorCount": {
                    "type": "integer",
                    "description": "The number of accelerators used by the runtime.\n",
                    "willReplaceOnChanges": true
                },
                "acceleratorType": {
                    "type": "string",
                    "description": "The type of hardware accelerator used by the runtime. If specified, acceleratorCount must also be specified.\n",
                    "willReplaceOnChanges": true
                },
                "machineType": {
                    "type": "string",
                    "description": "The Compute Engine machine type selected for the runtime.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:colab/NotebookExecutionCustomEnvironmentSpecNetworkSpec:NotebookExecutionCustomEnvironmentSpecNetworkSpec": {
            "properties": {
                "enableInternetAccess": {
                    "type": "boolean",
                    "description": "Enable public internet access for the runtime.\n",
                    "willReplaceOnChanges": true
                },
                "network": {
                    "type": "string",
                    "description": "The name of the VPC that this runtime is in.\n",
                    "willReplaceOnChanges": true
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The name of the subnetwork that this runtime is in.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:colab/NotebookExecutionCustomEnvironmentSpecPersistentDiskSpec:NotebookExecutionCustomEnvironmentSpecPersistentDiskSpec": {
            "properties": {
                "diskSizeGb": {
                    "type": "string",
                    "description": "The disk size of the runtime in GB. If specified, the diskType must also be specified. The minimum size is 10GB and the maximum is 65536GB.\n",
                    "willReplaceOnChanges": true
                },
                "diskType": {
                    "type": "string",
                    "description": "The type of the persistent disk.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:colab/NotebookExecutionDataformRepositorySource:NotebookExecutionDataformRepositorySource": {
            "properties": {
                "commitSha": {
                    "type": "string",
                    "description": "The commit SHA to read repository with. If unset, the file will be read at HEAD.\n",
                    "willReplaceOnChanges": true
                },
                "dataformRepositoryResourceName": {
                    "type": "string",
                    "description": "The resource name of the Dataform Repository.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "dataformRepositoryResourceName"
            ]
        },
        "gcp:colab/NotebookExecutionDirectNotebookSource:NotebookExecutionDirectNotebookSource": {
            "properties": {
                "content": {
                    "type": "string",
                    "description": "The base64-encoded contents of the input notebook file.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "content"
            ]
        },
        "gcp:colab/NotebookExecutionGcsNotebookSource:NotebookExecutionGcsNotebookSource": {
            "properties": {
                "generation": {
                    "type": "string",
                    "description": "The version of the Cloud Storage object to read. If unset, the current version of the object is read. See https://cloud.google.com/storage/docs/metadata#generation-number.\n",
                    "willReplaceOnChanges": true
                },
                "uri": {
                    "type": "string",
                    "description": "The Cloud Storage uri pointing to the ipynb file.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "uri"
            ]
        },
        "gcp:colab/RuntimeNotebookRuntimeTemplateRef:RuntimeNotebookRuntimeTemplateRef": {
            "properties": {
                "notebookRuntimeTemplate": {
                    "type": "string",
                    "description": "The resource name of the NotebookRuntimeTemplate based on which a NotebookRuntime will be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "notebookRuntimeTemplate"
            ]
        },
        "gcp:colab/RuntimeTemplateDataPersistentDiskSpec:RuntimeTemplateDataPersistentDiskSpec": {
            "properties": {
                "diskSizeGb": {
                    "type": "string",
                    "description": "The disk size of the runtime in GB. If specified, the diskType must also be specified. The minimum size is 10GB and the maximum is 65536GB.\n",
                    "willReplaceOnChanges": true
                },
                "diskType": {
                    "type": "string",
                    "description": "The type of the persistent disk.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "diskSizeGb",
                        "diskType"
                    ]
                }
            }
        },
        "gcp:colab/RuntimeTemplateEncryptionSpec:RuntimeTemplateEncryptionSpec": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The Cloud KMS encryption key (customer-managed encryption key) used to protect the runtime.\n"
                }
            },
            "type": "object"
        },
        "gcp:colab/RuntimeTemplateEucConfig:RuntimeTemplateEucConfig": {
            "properties": {
                "eucDisabled": {
                    "type": "boolean",
                    "description": "Disable end user credential access for the runtime.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "eucDisabled"
                    ]
                }
            }
        },
        "gcp:colab/RuntimeTemplateIamBindingCondition:RuntimeTemplateIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:colab/RuntimeTemplateIamMemberCondition:RuntimeTemplateIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:colab/RuntimeTemplateIdleShutdownConfig:RuntimeTemplateIdleShutdownConfig": {
            "properties": {
                "idleTimeout": {
                    "type": "string",
                    "description": "The duration after which the runtime is automatically shut down. An input of 0s disables the idle shutdown feature, and a valid range is [10m, 24h].\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "idleTimeout"
                    ]
                }
            }
        },
        "gcp:colab/RuntimeTemplateMachineSpec:RuntimeTemplateMachineSpec": {
            "properties": {
                "acceleratorCount": {
                    "type": "integer",
                    "description": "The number of accelerators used by the runtime.\n",
                    "willReplaceOnChanges": true
                },
                "acceleratorType": {
                    "type": "string",
                    "description": "The type of hardware accelerator used by the runtime. If specified, acceleratorCount must also be specified.\n",
                    "willReplaceOnChanges": true
                },
                "machineType": {
                    "type": "string",
                    "description": "The Compute Engine machine type selected for the runtime.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "acceleratorCount",
                        "machineType"
                    ]
                }
            }
        },
        "gcp:colab/RuntimeTemplateNetworkSpec:RuntimeTemplateNetworkSpec": {
            "properties": {
                "enableInternetAccess": {
                    "type": "boolean",
                    "description": "Enable public internet access for the runtime.\n",
                    "willReplaceOnChanges": true
                },
                "network": {
                    "type": "string",
                    "description": "The name of the VPC that this runtime is in.\n",
                    "willReplaceOnChanges": true
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The name of the subnetwork that this runtime is in.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "network"
                    ]
                }
            }
        },
        "gcp:colab/RuntimeTemplateShieldedVmConfig:RuntimeTemplateShieldedVmConfig": {
            "properties": {
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "Enables secure boot for the runtime.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableSecureBoot"
                    ]
                }
            }
        },
        "gcp:colab/RuntimeTemplateSoftwareConfig:RuntimeTemplateSoftwareConfig": {
            "properties": {
                "colabImage": {
                    "$ref": "#/types/gcp:colab/RuntimeTemplateSoftwareConfigColabImage:RuntimeTemplateSoftwareConfigColabImage",
                    "description": "Colab Image Configuration.\nStructure is documented below.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:colab/RuntimeTemplateSoftwareConfigEnv:RuntimeTemplateSoftwareConfigEnv"
                    },
                    "description": "Environment variables to be passed to the container.\nStructure is documented below.\n"
                },
                "postStartupScriptConfig": {
                    "$ref": "#/types/gcp:colab/RuntimeTemplateSoftwareConfigPostStartupScriptConfig:RuntimeTemplateSoftwareConfigPostStartupScriptConfig",
                    "description": "Post startup script config.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "colabImage"
                    ]
                }
            }
        },
        "gcp:colab/RuntimeTemplateSoftwareConfigColabImage:RuntimeTemplateSoftwareConfigColabImage": {
            "properties": {
                "releaseName": {
                    "type": "string",
                    "description": "The release name of the NotebookRuntime Colab image, e.g. \"py310\". If not specified, detault to the latest release.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "releaseName"
                    ]
                }
            }
        },
        "gcp:colab/RuntimeTemplateSoftwareConfigEnv:RuntimeTemplateSoftwareConfigEnv": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the environment variable. Must be a valid C identifier.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.\n"
                }
            },
            "type": "object"
        },
        "gcp:colab/RuntimeTemplateSoftwareConfigPostStartupScriptConfig:RuntimeTemplateSoftwareConfigPostStartupScriptConfig": {
            "properties": {
                "postStartupScript": {
                    "type": "string",
                    "description": "Post startup script to run after runtime is started.\n"
                },
                "postStartupScriptBehavior": {
                    "type": "string",
                    "description": "Post startup script behavior that defines download and execution behavior.\nPossible values are: `RUN_ONCE`, `RUN_EVERY_START`, `DOWNLOAD_AND_RUN_EVERY_START`.\n"
                },
                "postStartupScriptUrl": {
                    "type": "string",
                    "description": "Post startup script url to download. Example: https://bucket/script.sh.\n"
                }
            },
            "type": "object"
        },
        "gcp:colab/ScheduleCreateNotebookExecutionJobRequest:ScheduleCreateNotebookExecutionJobRequest": {
            "properties": {
                "notebookExecutionJob": {
                    "$ref": "#/types/gcp:colab/ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob:ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob",
                    "description": "The NotebookExecutionJob to create.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "notebookExecutionJob"
            ]
        },
        "gcp:colab/ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob:ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob": {
            "properties": {
                "dataformRepositorySource": {
                    "$ref": "#/types/gcp:colab/ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource:ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource",
                    "description": "The Dataform Repository containing the input notebook.\nStructure is documented below.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "Required. The display name of the Notebook Execution.\n"
                },
                "executionTimeout": {
                    "type": "string",
                    "description": "Max running time of the execution job in seconds (default 86400s / 24 hrs). A duration in seconds with up to nine fractional digits, ending with \"s\". Example: \"3.5s\".\n"
                },
                "executionUser": {
                    "type": "string",
                    "description": "The user email to run the execution as.\n"
                },
                "gcsNotebookSource": {
                    "$ref": "#/types/gcp:colab/ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource:ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource",
                    "description": "The Cloud Storage uri for the input notebook.\nStructure is documented below.\n"
                },
                "gcsOutputUri": {
                    "type": "string",
                    "description": "The Cloud Storage location to upload the result to. Format:`gs://bucket-name`\n"
                },
                "notebookRuntimeTemplateResourceName": {
                    "type": "string",
                    "description": "The NotebookRuntimeTemplate to source compute configuration from.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "The service account to run the execution as.\n"
                }
            },
            "type": "object",
            "required": [
                "displayName",
                "gcsOutputUri",
                "notebookRuntimeTemplateResourceName"
            ]
        },
        "gcp:colab/ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource:ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource": {
            "properties": {
                "commitSha": {
                    "type": "string",
                    "description": "The commit SHA to read repository with. If unset, the file will be read at HEAD.\n"
                },
                "dataformRepositoryResourceName": {
                    "type": "string",
                    "description": "The resource name of the Dataform Repository.\n"
                }
            },
            "type": "object",
            "required": [
                "dataformRepositoryResourceName"
            ]
        },
        "gcp:colab/ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource:ScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource": {
            "properties": {
                "generation": {
                    "type": "string",
                    "description": "The version of the Cloud Storage object to read. If unset, the current version of the object is read. See https://cloud.google.com/storage/docs/metadata#generation-number.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The Cloud Storage uri pointing to the ipynb file. Format: gs://bucket/notebook_file.ipynb\n"
                }
            },
            "type": "object",
            "required": [
                "uri"
            ]
        },
        "gcp:composer/EnvironmentConfig:EnvironmentConfig": {
            "properties": {
                "airflowUri": {
                    "type": "string",
                    "description": "The URI of the Apache Airflow Web UI hosted within this\nenvironment.\n"
                },
                "dagGcsPrefix": {
                    "type": "string",
                    "description": "The Cloud Storage prefix of the DAGs for this environment.\nAlthough Cloud Storage objects reside in a flat namespace, a\nhierarchical file tree can be simulated using '/'-delimited\nobject name prefixes. DAG objects for this environment\nreside in a simulated directory with this prefix.\n"
                },
                "dataRetentionConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigDataRetentionConfig:EnvironmentConfigDataRetentionConfig",
                    "description": "The configuration setting for Airflow data retention mechanism. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4. or newer\n"
                },
                "databaseConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigDatabaseConfig:EnvironmentConfigDatabaseConfig",
                    "description": "The configuration of Cloud SQL instance that is used by the Apache Airflow software. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "enablePrivateBuildsOnly": {
                    "type": "boolean",
                    "description": "Optional. If true, builds performed during operations that install Python packages have only private connectivity to Google services. If false, the builds also have access to the internet.\n"
                },
                "enablePrivateEnvironment": {
                    "type": "boolean",
                    "description": "Optional. If true, a private Composer environment will be created.\n"
                },
                "encryptionConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigEncryptionConfig:EnvironmentConfigEncryptionConfig",
                    "description": "The encryption options for the Composer environment and its dependencies.\n"
                },
                "environmentSize": {
                    "type": "string",
                    "description": "The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.\n"
                },
                "gkeCluster": {
                    "type": "string",
                    "description": "The Kubernetes Engine cluster used to run this environment.\n"
                },
                "maintenanceWindow": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigMaintenanceWindow:EnvironmentConfigMaintenanceWindow",
                    "description": "The configuration for Cloud Composer maintenance window.\n"
                },
                "masterAuthorizedNetworksConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigMasterAuthorizedNetworksConfig:EnvironmentConfigMasterAuthorizedNetworksConfig",
                    "description": "Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.\n"
                },
                "nodeConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigNodeConfig:EnvironmentConfigNodeConfig",
                    "description": "The configuration used for the Kubernetes Engine cluster.\n"
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "privateEnvironmentConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigPrivateEnvironmentConfig:EnvironmentConfigPrivateEnvironmentConfig",
                    "description": "The configuration used for the Private IP Cloud Composer environment.\n",
                    "willReplaceOnChanges": true
                },
                "recoveryConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigRecoveryConfig:EnvironmentConfigRecoveryConfig",
                    "description": "The recovery configuration settings for the Cloud Composer environment\n"
                },
                "resilienceMode": {
                    "type": "string",
                    "description": "Whether high resilience is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.1.15-airflow-*.*.* and newer.\n"
                },
                "softwareConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigSoftwareConfig:EnvironmentConfigSoftwareConfig",
                    "description": "The configuration settings for software inside the environment.\n"
                },
                "webServerConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigWebServerConfig:EnvironmentConfigWebServerConfig",
                    "description": "The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "webServerNetworkAccessControl": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigWebServerNetworkAccessControl:EnvironmentConfigWebServerNetworkAccessControl",
                    "description": "Network-level access control policy for the Airflow web server.\n"
                },
                "workloadsConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigWorkloadsConfig:EnvironmentConfigWorkloadsConfig",
                    "description": "The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "airflowUri",
                        "dagGcsPrefix",
                        "dataRetentionConfig",
                        "databaseConfig",
                        "enablePrivateBuildsOnly",
                        "enablePrivateEnvironment",
                        "encryptionConfig",
                        "environmentSize",
                        "gkeCluster",
                        "maintenanceWindow",
                        "nodeConfig",
                        "nodeCount",
                        "privateEnvironmentConfig",
                        "resilienceMode",
                        "softwareConfig",
                        "webServerConfig",
                        "webServerNetworkAccessControl",
                        "workloadsConfig"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigDataRetentionConfig:EnvironmentConfigDataRetentionConfig": {
            "properties": {
                "airflowMetadataRetentionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig:EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig"
                    },
                    "description": "Optional. The policy for airflow metadata database retention.\n"
                },
                "taskLogsRetentionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig:EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig"
                    },
                    "description": "Optional. The configuration setting for Task Logs.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "airflowMetadataRetentionConfigs"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig:EnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig": {
            "properties": {
                "retentionDays": {
                    "type": "integer",
                    "description": "How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.\n"
                },
                "retentionMode": {
                    "type": "string",
                    "description": "Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "retentionDays",
                        "retentionMode"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig:EnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig": {
            "properties": {
                "storageMode": {
                    "type": "string",
                    "description": "Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer but not in composer-3*\n"
                }
            },
            "type": "object"
        },
        "gcp:composer/EnvironmentConfigDatabaseConfig:EnvironmentConfigDatabaseConfig": {
            "properties": {
                "machineType": {
                    "type": "string",
                    "description": "Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "Optional. Cloud SQL database preferred zone.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:composer/EnvironmentConfigEncryptionConfig:EnvironmentConfigEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ]
        },
        "gcp:composer/EnvironmentConfigMaintenanceWindow:EnvironmentConfigMaintenanceWindow": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to 'start_time'.\n"
                },
                "recurrence": {
                    "type": "string",
                    "description": "Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'. The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Start time of the first recurrence of the maintenance window.\n"
                }
            },
            "type": "object",
            "required": [
                "endTime",
                "recurrence",
                "startTime"
            ]
        },
        "gcp:composer/EnvironmentConfigMasterAuthorizedNetworksConfig:EnvironmentConfigMasterAuthorizedNetworksConfig": {
            "properties": {
                "cidrBlocks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock:EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock"
                    },
                    "description": "cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether or not master authorized networks is enabled.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:composer/EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock:EnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock": {
            "properties": {
                "cidrBlock": {
                    "type": "string",
                    "description": "cidr_block must be specified in CIDR notation.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "display_name is a field for users to identify CIDR blocks.\n"
                }
            },
            "type": "object",
            "required": [
                "cidrBlock"
            ]
        },
        "gcp:composer/EnvironmentConfigNodeConfig:EnvironmentConfigNodeConfig": {
            "properties": {
                "composerInternalIpv4CidrBlock": {
                    "type": "string",
                    "description": "IPv4 cidr range that will be used by Composer internal components.\n",
                    "willReplaceOnChanges": true
                },
                "composerNetworkAttachment": {
                    "type": "string",
                    "description": "PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.\n"
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n",
                    "willReplaceOnChanges": true
                },
                "enableIpMasqAgent": {
                    "type": "boolean",
                    "description": "Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent\n",
                    "willReplaceOnChanges": true
                },
                "ipAllocationPolicy": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigNodeConfigIpAllocationPolicy:EnvironmentConfigNodeConfigIpAllocationPolicy",
                    "description": "Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.\n",
                    "willReplaceOnChanges": true
                },
                "machineType": {
                    "type": "string",
                    "description": "The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: \"projects/{project}/zones/{zone}/machineTypes/{machineType}\". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n",
                    "willReplaceOnChanges": true
                },
                "maxPodsPerNode": {
                    "type": "integer",
                    "description": "The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n",
                    "willReplaceOnChanges": true
                },
                "network": {
                    "type": "string",
                    "description": "The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: \"projects/{project}/zones/{zone}/machineTypes/{machineType}\". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the \"default\" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.\n"
                },
                "oauthScopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to [\"https://www.googleapis.com/auth/cloud-platform\"]. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n",
                    "willReplaceOnChanges": true
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the \"default\" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.\n",
                    "willReplaceOnChanges": true
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. \"projects/{project}/regions/{region}/subnetworks/{subnetwork}\"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.\n",
                    "willReplaceOnChanges": true
                },
                "zone": {
                    "type": "string",
                    "description": "The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. \"projects/{project}/zones/{zone}\"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "composerInternalIpv4CidrBlock",
                        "composerNetworkAttachment",
                        "diskSizeGb",
                        "enableIpMasqAgent",
                        "ipAllocationPolicy",
                        "machineType",
                        "maxPodsPerNode",
                        "network",
                        "oauthScopes",
                        "serviceAccount",
                        "subnetwork",
                        "zone"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigNodeConfigIpAllocationPolicy:EnvironmentConfigNodeConfigIpAllocationPolicy": {
            "properties": {
                "clusterIpv4CidrBlock": {
                    "type": "string",
                    "description": "The IP address range used to allocate IP addresses to pods in the cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when\u003cspan pulumi-lang-nodejs=\" useIpAliases \" pulumi-lang-dotnet=\" UseIpAliases \" pulumi-lang-go=\" useIpAliases \" pulumi-lang-python=\" use_ip_aliases \" pulumi-lang-yaml=\" useIpAliases \" pulumi-lang-java=\" useIpAliases \" pulumi-lang-hcl=\" use_ip_aliases \"\u003e useIpAliases \u003c/span\u003eis true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either\u003cspan pulumi-lang-nodejs=\" clusterSecondaryRangeName \" pulumi-lang-dotnet=\" ClusterSecondaryRangeName \" pulumi-lang-go=\" clusterSecondaryRangeName \" pulumi-lang-python=\" cluster_secondary_range_name \" pulumi-lang-yaml=\" clusterSecondaryRangeName \" pulumi-lang-java=\" clusterSecondaryRangeName \" pulumi-lang-hcl=\" cluster_secondary_range_name \"\u003e clusterSecondaryRangeName \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" clusterIpv4CidrBlock \" pulumi-lang-dotnet=\" ClusterIpv4CidrBlock \" pulumi-lang-go=\" clusterIpv4CidrBlock \" pulumi-lang-python=\" cluster_ipv4_cidr_block \" pulumi-lang-yaml=\" clusterIpv4CidrBlock \" pulumi-lang-java=\" clusterIpv4CidrBlock \" pulumi-lang-hcl=\" cluster_ipv4_cidr_block \"\u003e clusterIpv4CidrBlock \u003c/span\u003ebut not both.\n",
                    "willReplaceOnChanges": true
                },
                "clusterSecondaryRangeName": {
                    "type": "string",
                    "description": "The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either\u003cspan pulumi-lang-nodejs=\" clusterSecondaryRangeName \" pulumi-lang-dotnet=\" ClusterSecondaryRangeName \" pulumi-lang-go=\" clusterSecondaryRangeName \" pulumi-lang-python=\" cluster_secondary_range_name \" pulumi-lang-yaml=\" clusterSecondaryRangeName \" pulumi-lang-java=\" clusterSecondaryRangeName \" pulumi-lang-hcl=\" cluster_secondary_range_name \"\u003e clusterSecondaryRangeName \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" clusterIpv4CidrBlock \" pulumi-lang-dotnet=\" ClusterIpv4CidrBlock \" pulumi-lang-go=\" clusterIpv4CidrBlock \" pulumi-lang-python=\" cluster_ipv4_cidr_block \" pulumi-lang-yaml=\" clusterIpv4CidrBlock \" pulumi-lang-java=\" clusterIpv4CidrBlock \" pulumi-lang-hcl=\" cluster_ipv4_cidr_block \"\u003e clusterIpv4CidrBlock \u003c/span\u003ebut not both. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when\u003cspan pulumi-lang-nodejs=\" useIpAliases \" pulumi-lang-dotnet=\" UseIpAliases \" pulumi-lang-go=\" useIpAliases \" pulumi-lang-python=\" use_ip_aliases \" pulumi-lang-yaml=\" useIpAliases \" pulumi-lang-java=\" useIpAliases \" pulumi-lang-hcl=\" use_ip_aliases \"\u003e useIpAliases \u003c/span\u003eis true.\n",
                    "willReplaceOnChanges": true
                },
                "servicesIpv4CidrBlock": {
                    "type": "string",
                    "description": "The IP address range used to allocate IP addresses in this cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when\u003cspan pulumi-lang-nodejs=\" useIpAliases \" pulumi-lang-dotnet=\" UseIpAliases \" pulumi-lang-go=\" useIpAliases \" pulumi-lang-python=\" use_ip_aliases \" pulumi-lang-yaml=\" useIpAliases \" pulumi-lang-java=\" useIpAliases \" pulumi-lang-hcl=\" use_ip_aliases \"\u003e useIpAliases \u003c/span\u003eis true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either\u003cspan pulumi-lang-nodejs=\" servicesSecondaryRangeName \" pulumi-lang-dotnet=\" ServicesSecondaryRangeName \" pulumi-lang-go=\" servicesSecondaryRangeName \" pulumi-lang-python=\" services_secondary_range_name \" pulumi-lang-yaml=\" servicesSecondaryRangeName \" pulumi-lang-java=\" servicesSecondaryRangeName \" pulumi-lang-hcl=\" services_secondary_range_name \"\u003e servicesSecondaryRangeName \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" servicesIpv4CidrBlock \" pulumi-lang-dotnet=\" ServicesIpv4CidrBlock \" pulumi-lang-go=\" servicesIpv4CidrBlock \" pulumi-lang-python=\" services_ipv4_cidr_block \" pulumi-lang-yaml=\" servicesIpv4CidrBlock \" pulumi-lang-java=\" servicesIpv4CidrBlock \" pulumi-lang-hcl=\" services_ipv4_cidr_block \"\u003e servicesIpv4CidrBlock \u003c/span\u003ebut not both.\n",
                    "willReplaceOnChanges": true
                },
                "servicesSecondaryRangeName": {
                    "type": "string",
                    "description": "The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either\u003cspan pulumi-lang-nodejs=\" servicesSecondaryRangeName \" pulumi-lang-dotnet=\" ServicesSecondaryRangeName \" pulumi-lang-go=\" servicesSecondaryRangeName \" pulumi-lang-python=\" services_secondary_range_name \" pulumi-lang-yaml=\" servicesSecondaryRangeName \" pulumi-lang-java=\" servicesSecondaryRangeName \" pulumi-lang-hcl=\" services_secondary_range_name \"\u003e servicesSecondaryRangeName \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" servicesIpv4CidrBlock \" pulumi-lang-dotnet=\" ServicesIpv4CidrBlock \" pulumi-lang-go=\" servicesIpv4CidrBlock \" pulumi-lang-python=\" services_ipv4_cidr_block \" pulumi-lang-yaml=\" servicesIpv4CidrBlock \" pulumi-lang-java=\" servicesIpv4CidrBlock \" pulumi-lang-hcl=\" services_ipv4_cidr_block \"\u003e servicesIpv4CidrBlock \u003c/span\u003ebut not both. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when\u003cspan pulumi-lang-nodejs=\" useIpAliases \" pulumi-lang-dotnet=\" UseIpAliases \" pulumi-lang-go=\" useIpAliases \" pulumi-lang-python=\" use_ip_aliases \" pulumi-lang-yaml=\" useIpAliases \" pulumi-lang-java=\" useIpAliases \" pulumi-lang-hcl=\" use_ip_aliases \"\u003e useIpAliases \u003c/span\u003eis true.\n",
                    "willReplaceOnChanges": true
                },
                "useIpAliases": {
                    "type": "boolean",
                    "description": "Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created. Defaults to true if the\u003cspan pulumi-lang-nodejs=\" ipAllocationPolicy \" pulumi-lang-dotnet=\" IpAllocationPolicy \" pulumi-lang-go=\" ipAllocationPolicy \" pulumi-lang-python=\" ip_allocation_policy \" pulumi-lang-yaml=\" ipAllocationPolicy \" pulumi-lang-java=\" ipAllocationPolicy \" pulumi-lang-hcl=\" ip_allocation_policy \"\u003e ipAllocationPolicy \u003c/span\u003eblock is present in config. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:composer/EnvironmentConfigPrivateEnvironmentConfig:EnvironmentConfigPrivateEnvironmentConfig": {
            "properties": {
                "cloudComposerConnectionSubnetwork": {
                    "type": "string",
                    "description": "When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.\n",
                    "willReplaceOnChanges": true
                },
                "cloudComposerNetworkIpv4CidrBlock": {
                    "type": "string",
                    "description": "The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.\n",
                    "willReplaceOnChanges": true
                },
                "cloudSqlIpv4CidrBlock": {
                    "type": "string",
                    "description": "The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.\n",
                    "willReplaceOnChanges": true
                },
                "connectionType": {
                    "type": "string",
                    "description": "Mode of internal communication within the Composer environment. Must be one of \"VPC_PEERING\" or \"PRIVATE_SERVICE_CONNECT\".\n",
                    "willReplaceOnChanges": true
                },
                "enablePrivateEndpoint": {
                    "type": "boolean",
                    "description": "If true, access to the public endpoint of the GKE cluster is denied. If this field is set to true, ip_allocation_policy.use_ip_aliases must be set to true for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n",
                    "willReplaceOnChanges": true
                },
                "enablePrivatelyUsedPublicIps": {
                    "type": "boolean",
                    "description": "When enabled, IPs from public (non-RFC1918) ranges can be used for ip_allocation_policy.cluster_ipv4_cidr_block and ip_allocation_policy.service_ipv4_cidr_block.\n",
                    "willReplaceOnChanges": true
                },
                "masterIpv4CidrBlock": {
                    "type": "string",
                    "description": "The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.\n",
                    "willReplaceOnChanges": true
                },
                "webServerIpv4CidrBlock": {
                    "type": "string",
                    "description": "The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from\u003cspan pulumi-lang-nodejs=\" masterIpv4CidrBlock \" pulumi-lang-dotnet=\" MasterIpv4CidrBlock \" pulumi-lang-go=\" masterIpv4CidrBlock \" pulumi-lang-python=\" master_ipv4_cidr_block \" pulumi-lang-yaml=\" masterIpv4CidrBlock \" pulumi-lang-java=\" masterIpv4CidrBlock \" pulumi-lang-hcl=\" master_ipv4_cidr_block \"\u003e masterIpv4CidrBlock \u003c/span\u003eand cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cloudComposerConnectionSubnetwork",
                        "cloudComposerNetworkIpv4CidrBlock",
                        "cloudSqlIpv4CidrBlock",
                        "connectionType",
                        "enablePrivatelyUsedPublicIps",
                        "masterIpv4CidrBlock",
                        "webServerIpv4CidrBlock"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigRecoveryConfig:EnvironmentConfigRecoveryConfig": {
            "properties": {
                "scheduledSnapshotsConfig": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig:EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig",
                    "description": "The configuration settings for scheduled snapshots.\n"
                }
            },
            "type": "object"
        },
        "gcp:composer/EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig:EnvironmentConfigRecoveryConfigScheduledSnapshotsConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.\n"
                },
                "snapshotCreationSchedule": {
                    "type": "string",
                    "description": "Snapshot schedule, in the unix-cron format.\n"
                },
                "snapshotLocation": {
                    "type": "string",
                    "description": "the URI of a bucket folder where to save the snapshot.\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:composer/EnvironmentConfigSoftwareConfig:EnvironmentConfigSoftwareConfig": {
            "properties": {
                "airflowConfigOverrides": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example \"core-dags_are_paused_at_creation\". Section names must not contain hyphens (\"-\"), opening square brackets (\"[\"), or closing square brackets (\"]\"). The property name must not be empty and cannot contain \"=\" or \";\". Section and property names cannot contain characters: \".\" Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.\n"
                },
                "cloudDataLineageIntegration": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigSoftwareConfigCloudDataLineageIntegration:EnvironmentConfigSoftwareConfigCloudDataLineageIntegration",
                    "description": "The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-*.*.* and newer\n"
                },
                "envVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.\n"
                },
                "imageVersion": {
                    "type": "string",
                    "description": "The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-([0-9]+(\\.[0-9]+\\.[0-9]+(-preview\\.[0-9]+)?)?|latest)-airflow-([0-9]+(\\.[0-9]+(\\.[0-9]+)?)?). The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major version number or 'latest'. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. See documentation for more details and version list.\n"
                },
                "pypiPackages": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. \"numpy\"). Values are the lowercase extras and version specifier (e.g. \"==1.12.0\", \"[devel,gcp_api]\", \"[devel]\u003e=1.8.2, \u003c1.9.2\"). To specify a package without pinning it to a version specifier, use the empty string as the value.\n"
                },
                "pythonVersion": {
                    "type": "string",
                    "description": "The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3.\n",
                    "willReplaceOnChanges": true
                },
                "schedulerCount": {
                    "type": "integer",
                    "description": "The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*.\n"
                },
                "webServerPluginsMode": {
                    "type": "string",
                    "description": "Should be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'. Used in Composer 3.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cloudDataLineageIntegration",
                        "imageVersion",
                        "pythonVersion",
                        "schedulerCount",
                        "webServerPluginsMode"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigSoftwareConfigCloudDataLineageIntegration:EnvironmentConfigSoftwareConfigCloudDataLineageIntegration": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether or not Cloud Data Lineage integration is enabled.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:composer/EnvironmentConfigWebServerConfig:EnvironmentConfigWebServerConfig": {
            "properties": {
                "machineType": {
                    "type": "string",
                    "description": "Optional. Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or composer-n1-webserver-8. If not specified, composer-n1-webserver-2 will be used. Value custom is returned only in response, if Airflow web server parameters were manually changed to a non-standard values.\n"
                }
            },
            "type": "object",
            "required": [
                "machineType"
            ]
        },
        "gcp:composer/EnvironmentConfigWebServerNetworkAccessControl:EnvironmentConfigWebServerNetworkAccessControl": {
            "properties": {
                "allowedIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange:EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange"
                    },
                    "description": "A collection of allowed IP ranges with descriptions.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "allowedIpRanges"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange:EnvironmentConfigWebServerNetworkAccessControlAllowedIpRange": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A description of this ip range.\n"
                },
                "value": {
                    "type": "string",
                    "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. IP range prefixes should be properly truncated. For example, 1.2.3.4/24 should be truncated to 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 should be truncated to 2001:db8::/32.\n"
                }
            },
            "type": "object",
            "required": [
                "value"
            ]
        },
        "gcp:composer/EnvironmentConfigWorkloadsConfig:EnvironmentConfigWorkloadsConfig": {
            "properties": {
                "dagProcessor": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigWorkloadsConfigDagProcessor:EnvironmentConfigWorkloadsConfigDagProcessor",
                    "description": "Configuration for resources used by DAG processor.\n"
                },
                "scheduler": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigWorkloadsConfigScheduler:EnvironmentConfigWorkloadsConfigScheduler",
                    "description": "Configuration for resources used by Airflow schedulers.\n"
                },
                "triggerer": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigWorkloadsConfigTriggerer:EnvironmentConfigWorkloadsConfigTriggerer",
                    "description": "Configuration for resources used by Airflow triggerers.\n"
                },
                "webServer": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigWorkloadsConfigWebServer:EnvironmentConfigWorkloadsConfigWebServer",
                    "description": "Configuration for resources used by Airflow web server.\n"
                },
                "worker": {
                    "$ref": "#/types/gcp:composer/EnvironmentConfigWorkloadsConfigWorker:EnvironmentConfigWorkloadsConfigWorker",
                    "description": "Configuration for resources used by Airflow workers.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dagProcessor",
                        "scheduler",
                        "triggerer",
                        "webServer",
                        "worker"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigWorkloadsConfigDagProcessor:EnvironmentConfigWorkloadsConfigDagProcessor": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "Number of DAG processors.\n"
                },
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for DAG processor.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for DAG processor.\n"
                },
                "storageGb": {
                    "type": "number",
                    "description": "Storage (GB) request and limit for DAG processor.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "count",
                        "cpu",
                        "memoryGb",
                        "storageGb"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigWorkloadsConfigScheduler:EnvironmentConfigWorkloadsConfigScheduler": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of schedulers.\n"
                },
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for a single Airflow scheduler replica\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for a single Airflow scheduler replica.\n"
                },
                "storageGb": {
                    "type": "number",
                    "description": "Storage (GB) request and limit for a single Airflow scheduler replica.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "count",
                        "cpu",
                        "memoryGb",
                        "storageGb"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigWorkloadsConfigTriggerer:EnvironmentConfigWorkloadsConfigTriggerer": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of triggerers.\n"
                },
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for a single Airflow triggerer replica.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for a single Airflow triggerer replica.\n"
                }
            },
            "type": "object",
            "required": [
                "count",
                "cpu",
                "memoryGb"
            ]
        },
        "gcp:composer/EnvironmentConfigWorkloadsConfigWebServer:EnvironmentConfigWorkloadsConfigWebServer": {
            "properties": {
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for Airflow web server.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for Airflow web server.\n"
                },
                "storageGb": {
                    "type": "number",
                    "description": "Storage (GB) request and limit for Airflow web server.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpu",
                        "memoryGb",
                        "storageGb"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentConfigWorkloadsConfigWorker:EnvironmentConfigWorkloadsConfigWorker": {
            "properties": {
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for a single Airflow worker replica.\n"
                },
                "maxCount": {
                    "type": "integer",
                    "description": "Maximum number of workers for autoscaling.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for a single Airflow worker replica.\n"
                },
                "minCount": {
                    "type": "integer",
                    "description": "Minimum number of workers for autoscaling.\n"
                },
                "storageGb": {
                    "type": "number",
                    "description": "Storage (GB) request and limit for a single Airflow worker replica.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpu",
                        "maxCount",
                        "memoryGb",
                        "minCount",
                        "storageGb"
                    ]
                }
            }
        },
        "gcp:composer/EnvironmentStorageConfig:EnvironmentStorageConfig": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Optional. Name of an existing Cloud Storage bucket to be used by the environment.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "bucket"
            ]
        },
        "gcp:composer/getEnvironmentConfig:getEnvironmentConfig": {
            "properties": {
                "airflowUri": {
                    "type": "string",
                    "description": "The URI of the Apache Airflow Web UI hosted within the\nenvironment.\n"
                },
                "dagGcsPrefix": {
                    "type": "string",
                    "description": "The Cloud Storage prefix of the DAGs for the environment.\n"
                },
                "dataRetentionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigDataRetentionConfig:getEnvironmentConfigDataRetentionConfig"
                    },
                    "description": "The configuration setting for Airflow data retention mechanism. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4. or newer\n"
                },
                "databaseConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigDatabaseConfig:getEnvironmentConfigDatabaseConfig"
                    },
                    "description": "The configuration of Cloud SQL instance that is used by the Apache Airflow software. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "enablePrivateBuildsOnly": {
                    "type": "boolean",
                    "description": "Optional. If true, builds performed during operations that install Python packages have only private connectivity to Google services. If false, the builds also have access to the internet.\n"
                },
                "enablePrivateEnvironment": {
                    "type": "boolean",
                    "description": "Optional. If true, a private Composer environment will be created.\n"
                },
                "encryptionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigEncryptionConfig:getEnvironmentConfigEncryptionConfig"
                    },
                    "description": "The encryption options for the Composer environment and its dependencies.\n"
                },
                "environmentSize": {
                    "type": "string",
                    "description": "The size of the Cloud Composer environment. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.\n"
                },
                "gkeCluster": {
                    "type": "string",
                    "description": "The Kubernetes Engine cluster used to run the environment.\n"
                },
                "maintenanceWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigMaintenanceWindow:getEnvironmentConfigMaintenanceWindow"
                    },
                    "description": "The configuration for Cloud Composer maintenance window.\n"
                },
                "masterAuthorizedNetworksConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigMasterAuthorizedNetworksConfig:getEnvironmentConfigMasterAuthorizedNetworksConfig"
                    },
                    "description": "Configuration options for the master authorized networks feature. Enabled master authorized networks will disallow all external traffic to access Kubernetes master through HTTPS except traffic from the given CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.\n"
                },
                "nodeConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigNodeConfig:getEnvironmentConfigNodeConfig"
                    },
                    "description": "The configuration used for the Kubernetes Engine cluster.\n"
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "The number of nodes in the Kubernetes Engine cluster that will be used to run this environment. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "privateEnvironmentConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigPrivateEnvironmentConfig:getEnvironmentConfigPrivateEnvironmentConfig"
                    },
                    "description": "The configuration used for the Private IP Cloud Composer environment.\n"
                },
                "recoveryConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigRecoveryConfig:getEnvironmentConfigRecoveryConfig"
                    },
                    "description": "The recovery configuration settings for the Cloud Composer environment\n"
                },
                "resilienceMode": {
                    "type": "string",
                    "description": "Whether high resilience is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.1.15-airflow-*.*.* and newer.\n"
                },
                "softwareConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigSoftwareConfig:getEnvironmentConfigSoftwareConfig"
                    },
                    "description": "The configuration settings for software inside the environment.\n"
                },
                "webServerConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWebServerConfig:getEnvironmentConfigWebServerConfig"
                    },
                    "description": "The configuration settings for the Airflow web server App Engine instance. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "webServerNetworkAccessControls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWebServerNetworkAccessControl:getEnvironmentConfigWebServerNetworkAccessControl"
                    },
                    "description": "Network-level access control policy for the Airflow web server.\n"
                },
                "workloadsConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWorkloadsConfig:getEnvironmentConfigWorkloadsConfig"
                    },
                    "description": "The workloads configuration settings for the GKE cluster associated with the Cloud Composer environment. Supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.\n"
                }
            },
            "type": "object",
            "required": [
                "airflowUri",
                "dagGcsPrefix",
                "dataRetentionConfigs",
                "databaseConfigs",
                "enablePrivateBuildsOnly",
                "enablePrivateEnvironment",
                "encryptionConfigs",
                "environmentSize",
                "gkeCluster",
                "maintenanceWindows",
                "masterAuthorizedNetworksConfigs",
                "nodeConfigs",
                "nodeCount",
                "privateEnvironmentConfigs",
                "recoveryConfigs",
                "resilienceMode",
                "softwareConfigs",
                "webServerConfigs",
                "webServerNetworkAccessControls",
                "workloadsConfigs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigDataRetentionConfig:getEnvironmentConfigDataRetentionConfig": {
            "properties": {
                "airflowMetadataRetentionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig:getEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig"
                    },
                    "description": "Optional. The policy for airflow metadata database retention.\n"
                },
                "taskLogsRetentionConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig:getEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig"
                    },
                    "description": "Optional. The configuration setting for Task Logs.\n"
                }
            },
            "type": "object",
            "required": [
                "airflowMetadataRetentionConfigs",
                "taskLogsRetentionConfigs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig:getEnvironmentConfigDataRetentionConfigAirflowMetadataRetentionConfig": {
            "properties": {
                "retentionDays": {
                    "type": "integer",
                    "description": "How many days data should be retained for. This field is supported for Cloud Composer environments in composer 3 and newer.\n"
                },
                "retentionMode": {
                    "type": "string",
                    "description": "Whether database retention is enabled or not. This field is supported for Cloud Composer environments in composer 3 and newer.\n"
                }
            },
            "type": "object",
            "required": [
                "retentionDays",
                "retentionMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig:getEnvironmentConfigDataRetentionConfigTaskLogsRetentionConfig": {
            "properties": {
                "storageMode": {
                    "type": "string",
                    "description": "Whether logs in cloud logging only is enabled or not. This field is supported for Cloud Composer environments in versions composer-2.0.32-airflow-2.1.4 and newer but not in composer-3*\n"
                }
            },
            "type": "object",
            "required": [
                "storageMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigDatabaseConfig:getEnvironmentConfigDatabaseConfig": {
            "properties": {
                "machineType": {
                    "type": "string",
                    "description": "Optional. Cloud SQL machine type used by Airflow database. It has to be one of: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 or db-n1-standard-16. If not specified, db-n1-standard-2 will be used.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "Optional. Cloud SQL database preferred zone.\n"
                }
            },
            "type": "object",
            "required": [
                "machineType",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigEncryptionConfig:getEnvironmentConfigEncryptionConfig": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "Optional. Customer-managed Encryption Key available through Google's Key Management Service. Cannot be updated.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigMaintenanceWindow:getEnvironmentConfigMaintenanceWindow": {
            "properties": {
                "endTime": {
                    "type": "string",
                    "description": "Maintenance window end time. It is used only to calculate the duration of the maintenance window. The value for end-time must be in the future, relative to 'start_time'.\n"
                },
                "recurrence": {
                    "type": "string",
                    "description": "Maintenance window recurrence. Format is a subset of RFC-5545 (https://tools.ietf.org/html/rfc5545) 'RRULE'. The only allowed values for 'FREQ' field are 'FREQ=DAILY' and 'FREQ=WEEKLY;BYDAY=...'. Example values: 'FREQ=WEEKLY;BYDAY=TU,WE', 'FREQ=DAILY'.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Start time of the first recurrence of the maintenance window.\n"
                }
            },
            "type": "object",
            "required": [
                "endTime",
                "recurrence",
                "startTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigMasterAuthorizedNetworksConfig:getEnvironmentConfigMasterAuthorizedNetworksConfig": {
            "properties": {
                "cidrBlocks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock:getEnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock"
                    },
                    "description": "cidr_blocks define up to 50 external networks that could access Kubernetes master through HTTPS.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether or not master authorized networks is enabled.\n"
                }
            },
            "type": "object",
            "required": [
                "cidrBlocks",
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock:getEnvironmentConfigMasterAuthorizedNetworksConfigCidrBlock": {
            "properties": {
                "cidrBlock": {
                    "type": "string",
                    "description": "cidr_block must be specified in CIDR notation.\n"
                },
                "displayName": {
                    "type": "string",
                    "description": "display_name is a field for users to identify CIDR blocks.\n"
                }
            },
            "type": "object",
            "required": [
                "cidrBlock",
                "displayName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigNodeConfig:getEnvironmentConfigNodeConfig": {
            "properties": {
                "composerInternalIpv4CidrBlock": {
                    "type": "string",
                    "description": "IPv4 cidr range that will be used by Composer internal components.\n"
                },
                "composerNetworkAttachment": {
                    "type": "string",
                    "description": "PSC (Private Service Connect) Network entry point. Customers can pre-create the Network Attachment and point Cloud Composer environment to use. It is possible to share network attachment among many environments, provided enough IP addresses are available.\n"
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "enableIpMasqAgent": {
                    "type": "boolean",
                    "description": "Deploys 'ip-masq-agent' daemon set in the GKE cluster and defines nonMasqueradeCIDRs equals to pod IP range so IP masquerading is used for all destination addresses, except between pods traffic. See: https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent\n"
                },
                "ipAllocationPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigNodeConfigIpAllocationPolicy:getEnvironmentConfigNodeConfigIpAllocationPolicy"
                    },
                    "description": "Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: \"projects/{project}/zones/{zone}/machineTypes/{machineType}\". Must belong to the enclosing environment's project and region/zone. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "maxPodsPerNode": {
                    "type": "integer",
                    "description": "The maximum pods per node in the GKE cluster allocated during environment creation. Lowering this value reduces IP address consumption by the Cloud Composer Kubernetes cluster. This value can only be set during environment creation, and only if the environment is VPC-Native. The range of possible values is 8-110, and the default is 32. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: \"projects/{project}/zones/{zone}/machineTypes/{machineType}\". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the \"default\" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.\n"
                },
                "oauthScopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to [\"https://www.googleapis.com/auth/cloud-platform\"]. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "serviceAccount": {
                    "type": "string",
                    "description": "The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the \"default\" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The Compute Engine subnetwork to be used for machine communications, specified as a self-link, relative resource name (e.g. \"projects/{project}/regions/{region}/subnetworks/{subnetwork}\"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. \"projects/{project}/zones/{zone}\"). Must belong to the enclosing environment's project and region. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                }
            },
            "type": "object",
            "required": [
                "composerInternalIpv4CidrBlock",
                "composerNetworkAttachment",
                "diskSizeGb",
                "enableIpMasqAgent",
                "ipAllocationPolicies",
                "machineType",
                "maxPodsPerNode",
                "network",
                "oauthScopes",
                "serviceAccount",
                "subnetwork",
                "tags",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigNodeConfigIpAllocationPolicy:getEnvironmentConfigNodeConfigIpAllocationPolicy": {
            "properties": {
                "clusterIpv4CidrBlock": {
                    "type": "string",
                    "description": "The IP address range used to allocate IP addresses to pods in the cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when\u003cspan pulumi-lang-nodejs=\" useIpAliases \" pulumi-lang-dotnet=\" UseIpAliases \" pulumi-lang-go=\" useIpAliases \" pulumi-lang-python=\" use_ip_aliases \" pulumi-lang-yaml=\" useIpAliases \" pulumi-lang-java=\" useIpAliases \" pulumi-lang-hcl=\" use_ip_aliases \"\u003e useIpAliases \u003c/span\u003eis true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either\u003cspan pulumi-lang-nodejs=\" clusterSecondaryRangeName \" pulumi-lang-dotnet=\" ClusterSecondaryRangeName \" pulumi-lang-go=\" clusterSecondaryRangeName \" pulumi-lang-python=\" cluster_secondary_range_name \" pulumi-lang-yaml=\" clusterSecondaryRangeName \" pulumi-lang-java=\" clusterSecondaryRangeName \" pulumi-lang-hcl=\" cluster_secondary_range_name \"\u003e clusterSecondaryRangeName \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" clusterIpv4CidrBlock \" pulumi-lang-dotnet=\" ClusterIpv4CidrBlock \" pulumi-lang-go=\" clusterIpv4CidrBlock \" pulumi-lang-python=\" cluster_ipv4_cidr_block \" pulumi-lang-yaml=\" clusterIpv4CidrBlock \" pulumi-lang-java=\" clusterIpv4CidrBlock \" pulumi-lang-hcl=\" cluster_ipv4_cidr_block \"\u003e clusterIpv4CidrBlock \u003c/span\u003ebut not both.\n"
                },
                "clusterSecondaryRangeName": {
                    "type": "string",
                    "description": "The name of the cluster's secondary range used to allocate IP addresses to pods. Specify either\u003cspan pulumi-lang-nodejs=\" clusterSecondaryRangeName \" pulumi-lang-dotnet=\" ClusterSecondaryRangeName \" pulumi-lang-go=\" clusterSecondaryRangeName \" pulumi-lang-python=\" cluster_secondary_range_name \" pulumi-lang-yaml=\" clusterSecondaryRangeName \" pulumi-lang-java=\" clusterSecondaryRangeName \" pulumi-lang-hcl=\" cluster_secondary_range_name \"\u003e clusterSecondaryRangeName \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" clusterIpv4CidrBlock \" pulumi-lang-dotnet=\" ClusterIpv4CidrBlock \" pulumi-lang-go=\" clusterIpv4CidrBlock \" pulumi-lang-python=\" cluster_ipv4_cidr_block \" pulumi-lang-yaml=\" clusterIpv4CidrBlock \" pulumi-lang-java=\" clusterIpv4CidrBlock \" pulumi-lang-hcl=\" cluster_ipv4_cidr_block \"\u003e clusterIpv4CidrBlock \u003c/span\u003ebut not both. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when\u003cspan pulumi-lang-nodejs=\" useIpAliases \" pulumi-lang-dotnet=\" UseIpAliases \" pulumi-lang-go=\" useIpAliases \" pulumi-lang-python=\" use_ip_aliases \" pulumi-lang-yaml=\" useIpAliases \" pulumi-lang-java=\" useIpAliases \" pulumi-lang-hcl=\" use_ip_aliases \"\u003e useIpAliases \u003c/span\u003eis true.\n"
                },
                "servicesIpv4CidrBlock": {
                    "type": "string",
                    "description": "The IP address range used to allocate IP addresses in this cluster. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when\u003cspan pulumi-lang-nodejs=\" useIpAliases \" pulumi-lang-dotnet=\" UseIpAliases \" pulumi-lang-go=\" useIpAliases \" pulumi-lang-python=\" use_ip_aliases \" pulumi-lang-yaml=\" useIpAliases \" pulumi-lang-java=\" useIpAliases \" pulumi-lang-hcl=\" use_ip_aliases \"\u003e useIpAliases \u003c/span\u003eis true. Set to blank to have GKE choose a range with the default size. Set to /netmask (e.g. /14) to have GKE choose a range with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use. Specify either\u003cspan pulumi-lang-nodejs=\" servicesSecondaryRangeName \" pulumi-lang-dotnet=\" ServicesSecondaryRangeName \" pulumi-lang-go=\" servicesSecondaryRangeName \" pulumi-lang-python=\" services_secondary_range_name \" pulumi-lang-yaml=\" servicesSecondaryRangeName \" pulumi-lang-java=\" servicesSecondaryRangeName \" pulumi-lang-hcl=\" services_secondary_range_name \"\u003e servicesSecondaryRangeName \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" servicesIpv4CidrBlock \" pulumi-lang-dotnet=\" ServicesIpv4CidrBlock \" pulumi-lang-go=\" servicesIpv4CidrBlock \" pulumi-lang-python=\" services_ipv4_cidr_block \" pulumi-lang-yaml=\" servicesIpv4CidrBlock \" pulumi-lang-java=\" servicesIpv4CidrBlock \" pulumi-lang-hcl=\" services_ipv4_cidr_block \"\u003e servicesIpv4CidrBlock \u003c/span\u003ebut not both.\n"
                },
                "servicesSecondaryRangeName": {
                    "type": "string",
                    "description": "The name of the services' secondary range used to allocate IP addresses to the cluster. Specify either\u003cspan pulumi-lang-nodejs=\" servicesSecondaryRangeName \" pulumi-lang-dotnet=\" ServicesSecondaryRangeName \" pulumi-lang-go=\" servicesSecondaryRangeName \" pulumi-lang-python=\" services_secondary_range_name \" pulumi-lang-yaml=\" servicesSecondaryRangeName \" pulumi-lang-java=\" servicesSecondaryRangeName \" pulumi-lang-hcl=\" services_secondary_range_name \"\u003e servicesSecondaryRangeName \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" servicesIpv4CidrBlock \" pulumi-lang-dotnet=\" ServicesIpv4CidrBlock \" pulumi-lang-go=\" servicesIpv4CidrBlock \" pulumi-lang-python=\" services_ipv4_cidr_block \" pulumi-lang-yaml=\" servicesIpv4CidrBlock \" pulumi-lang-java=\" servicesIpv4CidrBlock \" pulumi-lang-hcl=\" services_ipv4_cidr_block \"\u003e servicesIpv4CidrBlock \u003c/span\u003ebut not both. For Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*, this field is applicable only when\u003cspan pulumi-lang-nodejs=\" useIpAliases \" pulumi-lang-dotnet=\" UseIpAliases \" pulumi-lang-go=\" useIpAliases \" pulumi-lang-python=\" use_ip_aliases \" pulumi-lang-yaml=\" useIpAliases \" pulumi-lang-java=\" useIpAliases \" pulumi-lang-hcl=\" use_ip_aliases \"\u003e useIpAliases \u003c/span\u003eis true.\n"
                },
                "useIpAliases": {
                    "type": "boolean",
                    "description": "Whether or not to enable Alias IPs in the GKE cluster. If true, a VPC-native cluster is created. Defaults to true if the\u003cspan pulumi-lang-nodejs=\" ipAllocationPolicy \" pulumi-lang-dotnet=\" IpAllocationPolicy \" pulumi-lang-go=\" ipAllocationPolicy \" pulumi-lang-python=\" ip_allocation_policy \" pulumi-lang-yaml=\" ipAllocationPolicy \" pulumi-lang-java=\" ipAllocationPolicy \" pulumi-lang-hcl=\" ip_allocation_policy \"\u003e ipAllocationPolicy \u003c/span\u003eblock is present in config. This field is only supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use VPC-native GKE clusters.\n"
                }
            },
            "type": "object",
            "required": [
                "clusterIpv4CidrBlock",
                "clusterSecondaryRangeName",
                "servicesIpv4CidrBlock",
                "servicesSecondaryRangeName",
                "useIpAliases"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigPrivateEnvironmentConfig:getEnvironmentConfigPrivateEnvironmentConfig": {
            "properties": {
                "cloudComposerConnectionSubnetwork": {
                    "type": "string",
                    "description": "When specified, the environment will use Private Service Connect instead of VPC peerings to connect to Cloud SQL in the Tenant Project, and the PSC endpoint in the Customer Project will use an IP address from this subnetwork. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.\n"
                },
                "cloudComposerNetworkIpv4CidrBlock": {
                    "type": "string",
                    "description": "The CIDR block from which IP range for Cloud Composer Network in tenant project will be reserved. Needs to be disjoint from private_cluster_config.master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-2.*.*-airflow-*.*.* and newer.\n"
                },
                "cloudSqlIpv4CidrBlock": {
                    "type": "string",
                    "description": "The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.\n"
                },
                "connectionType": {
                    "type": "string",
                    "description": "Mode of internal communication within the Composer environment. Must be one of \"VPC_PEERING\" or \"PRIVATE_SERVICE_CONNECT\".\n"
                },
                "enablePrivateEndpoint": {
                    "type": "boolean",
                    "description": "If true, access to the public endpoint of the GKE cluster is denied. If this field is set to true, ip_allocation_policy.use_ip_aliases must be set to true for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                },
                "enablePrivatelyUsedPublicIps": {
                    "type": "boolean",
                    "description": "When enabled, IPs from public (non-RFC1918) ranges can be used for ip_allocation_policy.cluster_ipv4_cidr_block and ip_allocation_policy.service_ipv4_cidr_block.\n"
                },
                "masterIpv4CidrBlock": {
                    "type": "string",
                    "description": "The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.\n"
                },
                "webServerIpv4CidrBlock": {
                    "type": "string",
                    "description": "The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from\u003cspan pulumi-lang-nodejs=\" masterIpv4CidrBlock \" pulumi-lang-dotnet=\" MasterIpv4CidrBlock \" pulumi-lang-go=\" masterIpv4CidrBlock \" pulumi-lang-python=\" master_ipv4_cidr_block \" pulumi-lang-yaml=\" masterIpv4CidrBlock \" pulumi-lang-java=\" masterIpv4CidrBlock \" pulumi-lang-hcl=\" master_ipv4_cidr_block \"\u003e masterIpv4CidrBlock \u003c/span\u003eand cloud_sql_ipv4_cidr_block. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*.\n"
                }
            },
            "type": "object",
            "required": [
                "cloudComposerConnectionSubnetwork",
                "cloudComposerNetworkIpv4CidrBlock",
                "cloudSqlIpv4CidrBlock",
                "connectionType",
                "enablePrivateEndpoint",
                "enablePrivatelyUsedPublicIps",
                "masterIpv4CidrBlock",
                "webServerIpv4CidrBlock"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigRecoveryConfig:getEnvironmentConfigRecoveryConfig": {
            "properties": {
                "scheduledSnapshotsConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigRecoveryConfigScheduledSnapshotsConfig:getEnvironmentConfigRecoveryConfigScheduledSnapshotsConfig"
                    },
                    "description": "The configuration settings for scheduled snapshots.\n"
                }
            },
            "type": "object",
            "required": [
                "scheduledSnapshotsConfigs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigRecoveryConfigScheduledSnapshotsConfig:getEnvironmentConfigRecoveryConfigScheduledSnapshotsConfig": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "When enabled, Cloud Composer periodically saves snapshots of your environment to a Cloud Storage bucket.\n"
                },
                "snapshotCreationSchedule": {
                    "type": "string",
                    "description": "Snapshot schedule, in the unix-cron format.\n"
                },
                "snapshotLocation": {
                    "type": "string",
                    "description": "the URI of a bucket folder where to save the snapshot.\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "A time zone for the schedule. This value is a time offset and does not take into account daylight saving time changes. Valid values are from UTC-12 to UTC+12. Examples: UTC, UTC-01, UTC+03.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "snapshotCreationSchedule",
                "snapshotLocation",
                "timeZone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigSoftwareConfig:getEnvironmentConfigSoftwareConfig": {
            "properties": {
                "airflowConfigOverrides": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example \"core-dags_are_paused_at_creation\". Section names must not contain hyphens (\"-\"), opening square brackets (\"[\"), or closing square brackets (\"]\"). The property name must not be empty and cannot contain \"=\" or \";\". Section and property names cannot contain characters: \".\" Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.\n"
                },
                "cloudDataLineageIntegrations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigSoftwareConfigCloudDataLineageIntegration:getEnvironmentConfigSoftwareConfigCloudDataLineageIntegration"
                    },
                    "description": "The configuration for Cloud Data Lineage integration. Supported for Cloud Composer environments in versions composer-2.1.2-airflow-*.*.* and newer\n"
                },
                "envVariables": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.\n"
                },
                "imageVersion": {
                    "type": "string",
                    "description": "The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-([0-9]+(\\.[0-9]+\\.[0-9]+(-preview\\.[0-9]+)?)?|latest)-airflow-([0-9]+(\\.[0-9]+(\\.[0-9]+)?)?). The Cloud Composer portion of the image version is a full semantic version, or an alias in the form of major version number or 'latest'. The Apache Airflow portion of the image version is a full semantic version that points to one of the supported Apache Airflow versions, or an alias in the form of only major or major.minor versions specified. See documentation for more details and version list.\n"
                },
                "pypiPackages": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. \"numpy\"). Values are the lowercase extras and version specifier (e.g. \"==1.12.0\", \"[devel,gcp_api]\", \"[devel]\u003e=1.8.2, \u003c1.9.2\"). To specify a package without pinning it to a version specifier, use the empty string as the value.\n"
                },
                "pythonVersion": {
                    "type": "string",
                    "description": "The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-*.*.*. Environments in newer versions always use Python major version 3.\n"
                },
                "schedulerCount": {
                    "type": "integer",
                    "description": "The number of schedulers for Airflow. This field is supported for Cloud Composer environments in versions composer-1.*.*-airflow-2.*.*.\n"
                },
                "webServerPluginsMode": {
                    "type": "string",
                    "description": "Should be either 'ENABLED' or 'DISABLED'. Defaults to 'ENABLED'. Used in Composer 3.\n"
                }
            },
            "type": "object",
            "required": [
                "airflowConfigOverrides",
                "cloudDataLineageIntegrations",
                "envVariables",
                "imageVersion",
                "pypiPackages",
                "pythonVersion",
                "schedulerCount",
                "webServerPluginsMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigSoftwareConfigCloudDataLineageIntegration:getEnvironmentConfigSoftwareConfigCloudDataLineageIntegration": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether or not Cloud Data Lineage integration is enabled.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWebServerConfig:getEnvironmentConfigWebServerConfig": {
            "properties": {
                "machineType": {
                    "type": "string",
                    "description": "Optional. Machine type on which Airflow web server is running. It has to be one of: composer-n1-webserver-2, composer-n1-webserver-4 or composer-n1-webserver-8. If not specified, composer-n1-webserver-2 will be used. Value custom is returned only in response, if Airflow web server parameters were manually changed to a non-standard values.\n"
                }
            },
            "type": "object",
            "required": [
                "machineType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWebServerNetworkAccessControl:getEnvironmentConfigWebServerNetworkAccessControl": {
            "properties": {
                "allowedIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWebServerNetworkAccessControlAllowedIpRange:getEnvironmentConfigWebServerNetworkAccessControlAllowedIpRange"
                    },
                    "description": "A collection of allowed IP ranges with descriptions.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedIpRanges"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWebServerNetworkAccessControlAllowedIpRange:getEnvironmentConfigWebServerNetworkAccessControlAllowedIpRange": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A description of this ip range.\n"
                },
                "value": {
                    "type": "string",
                    "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334. IP range prefixes should be properly truncated. For example, 1.2.3.4/24 should be truncated to 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 should be truncated to 2001:db8::/32.\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWorkloadsConfig:getEnvironmentConfigWorkloadsConfig": {
            "properties": {
                "dagProcessors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWorkloadsConfigDagProcessor:getEnvironmentConfigWorkloadsConfigDagProcessor"
                    },
                    "description": "Configuration for resources used by DAG processor.\n"
                },
                "schedulers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWorkloadsConfigScheduler:getEnvironmentConfigWorkloadsConfigScheduler"
                    },
                    "description": "Configuration for resources used by Airflow schedulers.\n"
                },
                "triggerers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWorkloadsConfigTriggerer:getEnvironmentConfigWorkloadsConfigTriggerer"
                    },
                    "description": "Configuration for resources used by Airflow triggerers.\n"
                },
                "webServers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWorkloadsConfigWebServer:getEnvironmentConfigWorkloadsConfigWebServer"
                    },
                    "description": "Configuration for resources used by Airflow web server.\n"
                },
                "workers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:composer/getEnvironmentConfigWorkloadsConfigWorker:getEnvironmentConfigWorkloadsConfigWorker"
                    },
                    "description": "Configuration for resources used by Airflow workers.\n"
                }
            },
            "type": "object",
            "required": [
                "dagProcessors",
                "schedulers",
                "triggerers",
                "webServers",
                "workers"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWorkloadsConfigDagProcessor:getEnvironmentConfigWorkloadsConfigDagProcessor": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "Number of DAG processors.\n"
                },
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for DAG processor.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for DAG processor.\n"
                },
                "storageGb": {
                    "type": "number",
                    "description": "Storage (GB) request and limit for DAG processor.\n"
                }
            },
            "type": "object",
            "required": [
                "count",
                "cpu",
                "memoryGb",
                "storageGb"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWorkloadsConfigScheduler:getEnvironmentConfigWorkloadsConfigScheduler": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of schedulers.\n"
                },
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for a single Airflow scheduler replica\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for a single Airflow scheduler replica.\n"
                },
                "storageGb": {
                    "type": "number",
                    "description": "Storage (GB) request and limit for a single Airflow scheduler replica.\n"
                }
            },
            "type": "object",
            "required": [
                "count",
                "cpu",
                "memoryGb",
                "storageGb"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWorkloadsConfigTriggerer:getEnvironmentConfigWorkloadsConfigTriggerer": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of triggerers.\n"
                },
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for a single Airflow triggerer replica.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for a single Airflow triggerer replica.\n"
                }
            },
            "type": "object",
            "required": [
                "count",
                "cpu",
                "memoryGb"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWorkloadsConfigWebServer:getEnvironmentConfigWorkloadsConfigWebServer": {
            "properties": {
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for Airflow web server.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for Airflow web server.\n"
                },
                "storageGb": {
                    "type": "number",
                    "description": "Storage (GB) request and limit for Airflow web server.\n"
                }
            },
            "type": "object",
            "required": [
                "cpu",
                "memoryGb",
                "storageGb"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentConfigWorkloadsConfigWorker:getEnvironmentConfigWorkloadsConfigWorker": {
            "properties": {
                "cpu": {
                    "type": "number",
                    "description": "CPU request and limit for a single Airflow worker replica.\n"
                },
                "maxCount": {
                    "type": "integer",
                    "description": "Maximum number of workers for autoscaling.\n"
                },
                "memoryGb": {
                    "type": "number",
                    "description": "Memory (GB) request and limit for a single Airflow worker replica.\n"
                },
                "minCount": {
                    "type": "integer",
                    "description": "Minimum number of workers for autoscaling.\n"
                },
                "storageGb": {
                    "type": "number",
                    "description": "Storage (GB) request and limit for a single Airflow worker replica.\n"
                }
            },
            "type": "object",
            "required": [
                "cpu",
                "maxCount",
                "memoryGb",
                "minCount",
                "storageGb"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getEnvironmentStorageConfig:getEnvironmentStorageConfig": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Optional. Name of an existing Cloud Storage bucket to be used by the environment.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:composer/getImageVersionsImageVersion:getImageVersionsImageVersion": {
            "properties": {
                "imageVersionId": {
                    "type": "string",
                    "description": "The string identifier of the image version, in the form: \"composer-x.y.z-airflow-a.b.c\"\n"
                },
                "supportedPythonVersions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Supported python versions for this image version\n"
                }
            },
            "type": "object",
            "required": [
                "imageVersionId",
                "supportedPythonVersions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/AutoscalerAutoscalingPolicy:AutoscalerAutoscalingPolicy": {
            "properties": {
                "cooldownPeriod": {
                    "type": "integer",
                    "description": "The number of seconds that the autoscaler should wait before it\nstarts collecting information from a new instance. This prevents\nthe autoscaler from collecting information when the instance is\ninitializing, during which the collected usage would not be\nreliable. The default time autoscaler waits is 60 seconds.\nVirtual machine initialization times might vary because of\nnumerous factors. We recommend that you test how long an\ninstance may take to initialize. To do this, create an instance\nand time the startup process.\n"
                },
                "cpuUtilization": {
                    "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicyCpuUtilization:AutoscalerAutoscalingPolicyCpuUtilization",
                    "description": "Defines the CPU utilization policy that allows the autoscaler to\nscale based on the average CPU utilization of a managed instance\ngroup.\nStructure is documented below.\n"
                },
                "loadBalancingUtilization": {
                    "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicyLoadBalancingUtilization:AutoscalerAutoscalingPolicyLoadBalancingUtilization",
                    "description": "Configuration parameters of autoscaling based on a load balancer.\nStructure is documented below.\n"
                },
                "maxReplicas": {
                    "type": "integer",
                    "description": "The maximum number of instances that the autoscaler can scale up\nto. This is required when creating or updating an autoscaler. The\nmaximum number of replicas should not be lower than minimal number\nof replicas.\n"
                },
                "metrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicyMetric:AutoscalerAutoscalingPolicyMetric"
                    },
                    "description": "Configuration parameters of autoscaling based on a custom metric.\nStructure is documented below.\n"
                },
                "minReplicas": {
                    "type": "integer",
                    "description": "The minimum number of replicas that the autoscaler can scale down\nto. This cannot be less than 0. If not provided, autoscaler will\nchoose a default value depending on maximum number of instances\nallowed.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Defines operating mode for this policy.\n"
                },
                "scaleDownControl": {
                    "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicyScaleDownControl:AutoscalerAutoscalingPolicyScaleDownControl",
                    "description": "(Optional, Beta)\nDefines scale down controls to reduce the risk of response latency\nand outages due to abrupt scale-in events\nStructure is documented below.\n"
                },
                "scaleInControl": {
                    "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicyScaleInControl:AutoscalerAutoscalingPolicyScaleInControl",
                    "description": "Defines scale in controls to reduce the risk of response latency\nand outages due to abrupt scale-in events\nStructure is documented below.\n"
                },
                "scalingSchedules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicyScalingSchedule:AutoscalerAutoscalingPolicyScalingSchedule"
                    },
                    "description": "Scaling schedules defined for an autoscaler. Multiple schedules can be set on an autoscaler and they can overlap.\nStructure is documented below.\n"
                },
                "stabilizationPeriod": {
                    "type": "integer",
                    "description": "The number of seconds that the autoscaler waits for load stabilization\nbefore making scale-in decisions.\nThis might appear as a delay in scaling in but it is an important mechanism\nfor your application to not have fluctuating size due to short term load\nfluctuations.\n"
                }
            },
            "type": "object",
            "required": [
                "maxReplicas",
                "minReplicas"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpuUtilization",
                        "maxReplicas",
                        "minReplicas",
                        "scaleDownControl"
                    ]
                }
            }
        },
        "gcp:compute/AutoscalerAutoscalingPolicyCpuUtilization:AutoscalerAutoscalingPolicyCpuUtilization": {
            "properties": {
                "predictiveMethod": {
                    "type": "string",
                    "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are:\n- NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics.\n- OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.\n"
                },
                "target": {
                    "type": "number",
                    "description": "The target CPU utilization that the autoscaler should maintain.\nMust be a float value in the range (0, 1]. If not specified, the\ndefault is 0.6.\nIf the CPU level is below the target utilization, the autoscaler\nscales down the number of instances until it reaches the minimum\nnumber of instances you specified or until the average CPU of\nyour instances reaches the target utilization.\nIf the average CPU is above the target utilization, the autoscaler\nscales up until it reaches the maximum number of instances you\nspecified or until the average utilization reaches the target\nutilization.\n"
                }
            },
            "type": "object",
            "required": [
                "target"
            ]
        },
        "gcp:compute/AutoscalerAutoscalingPolicyLoadBalancingUtilization:AutoscalerAutoscalingPolicyLoadBalancingUtilization": {
            "properties": {
                "target": {
                    "type": "number",
                    "description": "Fraction of backend capacity utilization (set in HTTP(s) load\nbalancing configuration) that autoscaler should maintain. Must\nbe a positive float value. If not defined, the default is 0.8.\n"
                }
            },
            "type": "object",
            "required": [
                "target"
            ]
        },
        "gcp:compute/AutoscalerAutoscalingPolicyMetric:AutoscalerAutoscalingPolicyMetric": {
            "properties": {
                "filter": {
                    "type": "string",
                    "description": "A filter string to be used as the filter string for\na Stackdriver Monitoring TimeSeries.list API call.\nThis filter is used to select a specific TimeSeries for\nthe purpose of autoscaling and to determine whether the metric\nis exporting per-instance or per-group data.\nYou can only use the AND operator for joining selectors.\nYou can only use direct equality comparison operator (=) without\nany functions for each selector.\nYou can specify the metric in both the filter string and in the\nmetric field. However, if specified in both places, the metric must\nbe identical.\nThe monitored resource type determines what kind of values are\nexpected for the metric. If it is a gce_instance, the autoscaler\nexpects the metric to include a separate TimeSeries for each\ninstance in a group. In such a case, you cannot filter on resource\nlabels.\nIf the resource type is any other value, the autoscaler expects\nthis metric to contain values that apply to the entire autoscaled\ninstance group and resource label filtering can be performed to\npoint autoscaler at the correct TimeSeries to scale upon.\nThis is called a per-group metric for the purpose of autoscaling.\nIf not specified, the type defaults to gce_instance.\nYou should provide a filter that is selective enough to pick just\none TimeSeries for the autoscaled group or for each of the instances\n(if you are using\u003cspan pulumi-lang-nodejs=\" gceInstance \" pulumi-lang-dotnet=\" GceInstance \" pulumi-lang-go=\" gceInstance \" pulumi-lang-python=\" gce_instance \" pulumi-lang-yaml=\" gceInstance \" pulumi-lang-java=\" gceInstance \" pulumi-lang-hcl=\" gce_instance \"\u003e gceInstance \u003c/span\u003eresource type). If multiple\nTimeSeries are returned upon the query execution, the autoscaler\nwill sum their respective values to obtain its scaling value.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The identifier (type) of the Stackdriver Monitoring metric.\nThe metric cannot have negative values.\nThe metric must have a value type of INT64 or DOUBLE.\n"
                },
                "singleInstanceAssignment": {
                    "type": "number",
                    "description": "If scaling is based on a per-group metric value that represents the\ntotal amount of work to be done or resource usage, set this value to\nan amount assigned for a single instance of the scaled group.\nThe autoscaler will keep the number of instances proportional to the\nvalue of this metric, the metric itself should not change value due\nto group resizing.\nFor example, a good metric to use with the target is\n`pubsub.googleapis.com/subscription/num_undelivered_messages`\nor a custom metric exporting the total number of requests coming to\nyour instances.\nA bad example would be a metric exporting an average or median\nlatency, since this value can't include a chunk assignable to a\nsingle instance, it could be better used with\u003cspan pulumi-lang-nodejs=\" utilizationTarget\n\" pulumi-lang-dotnet=\" UtilizationTarget\n\" pulumi-lang-go=\" utilizationTarget\n\" pulumi-lang-python=\" utilization_target\n\" pulumi-lang-yaml=\" utilizationTarget\n\" pulumi-lang-java=\" utilizationTarget\n\" pulumi-lang-hcl=\" utilization_target\n\"\u003e utilizationTarget\n\u003c/span\u003einstead.\n"
                },
                "target": {
                    "type": "number",
                    "description": "The target value of the metric that autoscaler should\nmaintain. This must be a positive value. A utilization\nmetric scales number of virtual machines handling requests\nto increase or decrease proportionally to the metric.\nFor example, a good metric to use as a utilizationTarget is\nwww.googleapis.com/compute/instance/network/received_bytes_count.\nThe autoscaler will work to keep this value constant for each\nof the instances.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Defines how target utilization value is expressed for a\nStackdriver Monitoring metric.\nPossible values are: `GAUGE`, `DELTA_PER_SECOND`, `DELTA_PER_MINUTE`.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/AutoscalerAutoscalingPolicyScaleDownControl:AutoscalerAutoscalingPolicyScaleDownControl": {
            "properties": {
                "maxScaledDownReplicas": {
                    "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicyScaleDownControlMaxScaledDownReplicas:AutoscalerAutoscalingPolicyScaleDownControlMaxScaledDownReplicas",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "timeWindowSec": {
                    "type": "integer",
                    "description": "How long back autoscaling should look when computing recommendations\nto include directives regarding slower scale down, as described above.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/AutoscalerAutoscalingPolicyScaleDownControlMaxScaledDownReplicas:AutoscalerAutoscalingPolicyScaleDownControlMaxScaledDownReplicas": {
            "properties": {
                "fixed": {
                    "type": "integer",
                    "description": "Specifies a fixed number of VM instances. This must be a positive\ninteger.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "Specifies a percentage of instances between 0 to 100%, inclusive.\nFor example, specify 80 for 80%.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/AutoscalerAutoscalingPolicyScaleInControl:AutoscalerAutoscalingPolicyScaleInControl": {
            "properties": {
                "maxScaledInReplicas": {
                    "$ref": "#/types/gcp:compute/AutoscalerAutoscalingPolicyScaleInControlMaxScaledInReplicas:AutoscalerAutoscalingPolicyScaleInControlMaxScaledInReplicas",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "timeWindowSec": {
                    "type": "integer",
                    "description": "How long back autoscaling should look when computing recommendations\nto include directives regarding slower scale down, as described above.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/AutoscalerAutoscalingPolicyScaleInControlMaxScaledInReplicas:AutoscalerAutoscalingPolicyScaleInControlMaxScaledInReplicas": {
            "properties": {
                "fixed": {
                    "type": "integer",
                    "description": "Specifies a fixed number of VM instances. This must be a positive\ninteger.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "Specifies a percentage of instances between 0 to 100%, inclusive.\nFor example, specify 80 for 80%.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/AutoscalerAutoscalingPolicyScalingSchedule:AutoscalerAutoscalingPolicyScalingSchedule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A description of a scaling schedule.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "A boolean value that specifies if a scaling schedule can influence autoscaler recommendations. If set to true, then a scaling schedule has no effect.\n"
                },
                "durationSec": {
                    "type": "integer",
                    "description": "The duration of time intervals (in seconds) for which this scaling schedule will be running. The minimum allowed value is 300.\n"
                },
                "minRequiredReplicas": {
                    "type": "integer",
                    "description": "Minimum number of VM instances that autoscaler will recommend in time intervals starting according to schedule.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "The start timestamps of time intervals when this scaling schedule should provide a scaling signal. This field uses the extended cron format (with an optional year field).\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "The time zone to be used when interpreting the schedule. The value of this field must be a time zone name from the tz database: http://en.wikipedia.org/wiki/Tz_database.\n"
                }
            },
            "type": "object",
            "required": [
                "durationSec",
                "minRequiredReplicas",
                "name",
                "schedule"
            ]
        },
        "gcp:compute/BackendBucketCdnPolicy:BackendBucketCdnPolicy": {
            "properties": {
                "bypassCacheOnRequestHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/BackendBucketCdnPolicyBypassCacheOnRequestHeader:BackendBucketCdnPolicyBypassCacheOnRequestHeader"
                    },
                    "description": "Bypass the cache when the specified request headers are matched - e.g. Pragma or Authorization headers. Up to 5 headers can be specified. The cache is bypassed for all cdnPolicy.cacheMode settings.\nStructure is documented below.\n"
                },
                "cacheKeyPolicy": {
                    "$ref": "#/types/gcp:compute/BackendBucketCdnPolicyCacheKeyPolicy:BackendBucketCdnPolicyCacheKeyPolicy",
                    "description": "The CacheKeyPolicy for this CdnPolicy.\nStructure is documented below.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this backend.\nThe possible values are: USE_ORIGIN_HEADERS, FORCE_CACHE_ALL and CACHE_ALL_STATIC\nPossible values are: `USE_ORIGIN_HEADERS`, `FORCE_CACHE_ALL`, `CACHE_ALL_STATIC`.\n"
                },
                "clientTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin. When the\n\u003cspan pulumi-lang-nodejs=\"`cacheMode`\" pulumi-lang-dotnet=\"`CacheMode`\" pulumi-lang-go=\"`cacheMode`\" pulumi-lang-python=\"`cache_mode`\" pulumi-lang-yaml=\"`cacheMode`\" pulumi-lang-java=\"`cacheMode`\" pulumi-lang-hcl=\"`cache_mode`\"\u003e`cacheMode`\u003c/span\u003e is set to \"USE_ORIGIN_HEADERS\", you must omit this field.\n"
                },
                "defaultTtl": {
                    "type": "integer",
                    "description": "Specifies the default TTL for cached content served by this origin for responses\nthat do not have an existing valid TTL (max-age or s-max-age). When the \u003cspan pulumi-lang-nodejs=\"`cacheMode`\" pulumi-lang-dotnet=\"`CacheMode`\" pulumi-lang-go=\"`cacheMode`\" pulumi-lang-python=\"`cache_mode`\" pulumi-lang-yaml=\"`cacheMode`\" pulumi-lang-java=\"`cacheMode`\" pulumi-lang-hcl=\"`cache_mode`\"\u003e`cacheMode`\u003c/span\u003e\nis set to \"USE_ORIGIN_HEADERS\", you must omit this field.\n"
                },
                "maxTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin. When the\n\u003cspan pulumi-lang-nodejs=\"`cacheMode`\" pulumi-lang-dotnet=\"`CacheMode`\" pulumi-lang-go=\"`cacheMode`\" pulumi-lang-python=\"`cache_mode`\" pulumi-lang-yaml=\"`cacheMode`\" pulumi-lang-java=\"`cacheMode`\" pulumi-lang-hcl=\"`cache_mode`\"\u003e`cacheMode`\u003c/span\u003e is set to \"USE_ORIGIN_HEADERS\", you must omit this field.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply fine-grained caching for common errors or redirects.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/BackendBucketCdnPolicyNegativeCachingPolicy:BackendBucketCdnPolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching must be enabled to configure negativeCachingPolicy.\nOmitting the policy and leaving negativeCaching enabled will use Cloud CDN's default cache TTLs.\nStructure is documented below.\n"
                },
                "requestCoalescing": {
                    "type": "boolean",
                    "description": "If true then Cloud CDN will combine multiple concurrent cache fill requests into a small number of requests to the origin.\n"
                },
                "serveWhileStale": {
                    "type": "integer",
                    "description": "Serve existing content from the cache (if available) when revalidating content with the origin, or when an error is encountered when refreshing the cache.\n"
                },
                "signedUrlCacheMaxAgeSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the response to a signed URL request will\nbe considered fresh. After this time period,\nthe response will be revalidated before being served.\nWhen serving responses to signed URL requests,\nCloud CDN will internally behave as though\nall responses from this backend had a \"Cache-Control: public,\nmax-age=[TTL]\" header, regardless of any existing Cache-Control\nheader. The actual headers served in responses will not be altered.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cacheMode",
                        "clientTtl",
                        "defaultTtl",
                        "maxTtl",
                        "negativeCaching",
                        "serveWhileStale"
                    ]
                }
            }
        },
        "gcp:compute/BackendBucketCdnPolicyBypassCacheOnRequestHeader:BackendBucketCdnPolicyBypassCacheOnRequestHeader": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The header field name to match on when bypassing cache. Values are case-insensitive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendBucketCdnPolicyCacheKeyPolicy:BackendBucketCdnPolicyCacheKeyPolicy": {
            "properties": {
                "includeHttpHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP request headers (by name) to be used in the\ncache key.\n"
                },
                "queryStringWhitelists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys.\nDefault parameters are always included. '\u0026' and '=' will\nbe percent encoded and not treated as delimiters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendBucketCdnPolicyNegativeCachingPolicy:BackendBucketCdnPolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 308, 404, 405, 410, 421, 451 and 501\ncan be specified as values, and you cannot specify a status code more than once.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s\n(30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendBucketIamBindingCondition:BackendBucketIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/BackendBucketIamMemberCondition:BackendBucketIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/BackendBucketParams:BackendBucketParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the backend bucket. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceBackend:BackendServiceBackend": {
            "properties": {
                "balancingMode": {
                    "type": "string",
                    "description": "Specifies the balancing mode for this backend.\nFor global HTTP(S) or TCP/SSL load balancing, the default is\nUTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)),\nCUSTOM_METRICS (for HTTP(s)) and CONNECTION (for TCP/SSL).\nSee the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode)\nfor an explanation of load balancing modes.\nDefault value is `UTILIZATION`.\nPossible values are: `UTILIZATION`, `RATE`, `CONNECTION`, `CUSTOM_METRICS`, `IN_FLIGHT`.\n"
                },
                "capacityScaler": {
                    "type": "number",
                    "description": "A multiplier applied to the group's maximum servicing capacity\n(based on UTILIZATION, RATE or CONNECTION).\nDefault value is 1, which means the group will serve up to 100%\nof its configured capacity (depending on balancingMode). A\nsetting of 0 means the group is completely drained, offering\n0% of its available Capacity. Valid range is [0.0,1.0].\n"
                },
                "customMetrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/BackendServiceBackendCustomMetric:BackendServiceBackendCustomMetric"
                    },
                    "description": "The set of custom metrics that are used for \u003ccode\u003eCUSTOM_METRICS\u003c/code\u003e BalancingMode.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\nProvide this property when you create the resource.\n"
                },
                "group": {
                    "type": "string",
                    "description": "The fully-qualified URL of an Instance Group or Network Endpoint\nGroup resource. In case of instance group this defines the list\nof instances that serve traffic. Member virtual machine\ninstances from each instance group must live in the same zone as\nthe instance group itself. No two backends in a backend service\nare allowed to use same Instance Group resource.\nFor Network Endpoint Groups this defines list of endpoints. All\nendpoints of Network Endpoint Group must be hosted on instances\nlocated in the same zone as the Network Endpoint Group.\nBackend services cannot mix Instance Group and\nNetwork Endpoint Group backends.\nNote that you must specify an Instance Group or Network Endpoint\nGroup resource using the fully-qualified URL, rather than a\npartial URL.\n"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections for the group. Can\nbe used with either CONNECTION or UTILIZATION balancing modes.\nFor CONNECTION mode, either maxConnections or one\nof maxConnectionsPerInstance or maxConnectionsPerEndpoint,\nas appropriate for group type, must be set.\n"
                },
                "maxConnectionsPerEndpoint": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections that a single backend\nnetwork endpoint can handle. This is used to calculate the\ncapacity of the group. Can be used in either CONNECTION or\nUTILIZATION balancing modes.\nFor CONNECTION mode, either\nmaxConnections or maxConnectionsPerEndpoint must be set.\n"
                },
                "maxConnectionsPerInstance": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections that a single\nbackend instance can handle. This is used to calculate the\ncapacity of the group. Can be used in either CONNECTION or\nUTILIZATION balancing modes.\nFor CONNECTION mode, either maxConnections or\nmaxConnectionsPerInstance must be set.\n"
                },
                "maxInFlightRequests": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nDefines a maximum number of in-flight requests for the whole NEG\nor instance group. Not available if backend's balancingMode is RATE\nor CONNECTION.\n"
                },
                "maxInFlightRequestsPerEndpoint": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nDefines a maximum number of in-flight requests for a single endpoint.\nNot available if backend's balancingMode is RATE or CONNECTION.\n"
                },
                "maxInFlightRequestsPerInstance": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nDefines a maximum number of in-flight requests for a single VM.\nNot available if backend's balancingMode is RATE or CONNECTION.\n"
                },
                "maxRate": {
                    "type": "integer",
                    "description": "The max requests per second (RPS) of the group.\nCan be used with either RATE or UTILIZATION balancing modes,\nbut required if RATE mode. For RATE mode, either maxRate or one\nof maxRatePerInstance or maxRatePerEndpoint, as appropriate for\ngroup type, must be set.\n"
                },
                "maxRatePerEndpoint": {
                    "type": "number",
                    "description": "The max requests per second (RPS) that a single backend network\nendpoint can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerEndpoint must be set.\n"
                },
                "maxRatePerInstance": {
                    "type": "number",
                    "description": "The max requests per second (RPS) that a single backend\ninstance can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerInstance must be set.\n"
                },
                "maxUtilization": {
                    "type": "number",
                    "description": "Used when balancingMode is UTILIZATION. This ratio defines the\nCPU utilization target for the group. Valid range is [0.0, 1.0].\n"
                },
                "preference": {
                    "type": "string",
                    "description": "This field indicates whether this backend should be fully utilized before sending traffic to backends\nwith default preference. This field cannot be set when loadBalancingScheme is set to 'EXTERNAL'. The possible values are:\n- PREFERRED: Backends with this preference level will be filled up to their capacity limits first,\nbased on RTT.\n- DEFAULT: If preferred backends don't have enough capacity, backends in this layer would be used and\ntraffic would be assigned based on the load balancing algorithm you use. This is the default\nPossible values are: `PREFERRED`, `DEFAULT`.\n"
                },
                "trafficDuration": {
                    "type": "string",
                    "description": "(Optional, Beta)\nThis field specifies how long a connection should be kept alive for:\n- LONG: Most of the requests are expected to take more than multiple\nseconds to finish.\n- SHORT: Most requests are expected to finish with a sub-second latency.\nPossible values are: `LONG`, `SHORT`.\n"
                }
            },
            "type": "object",
            "required": [
                "group"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "group",
                        "maxConnections",
                        "maxConnectionsPerEndpoint",
                        "maxConnectionsPerInstance",
                        "maxInFlightRequests",
                        "maxInFlightRequestsPerEndpoint",
                        "maxInFlightRequestsPerInstance",
                        "maxRate",
                        "maxRatePerEndpoint",
                        "maxRatePerInstance",
                        "maxUtilization"
                    ]
                }
            }
        },
        "gcp:compute/BackendServiceBackendCustomMetric:BackendServiceBackendCustomMetric": {
            "properties": {
                "dryRun": {
                    "type": "boolean",
                    "description": "If true, the metric data is not used for load balancing.\n"
                },
                "maxUtilization": {
                    "type": "number",
                    "description": "Optional parameter to define a target utilization for the Custom Metrics\nbalancing mode. The valid range is \u003ccode\u003e[0.0, 1.0]\u003c/code\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of a custom utilization signal. The name must be 1-64 characters\nlong and match the regular expression a-z? which\nmeans the first character must be a lowercase letter, and all following\ncharacters must be a dash, period, underscore, lowercase letter, or\ndigit, except the last character, which cannot be a dash, period, or\nunderscore. For usage guidelines, see Custom Metrics balancing mode. This\nfield can only be used for a global or regional backend service with the\nloadBalancingScheme set to \u003ccode\u003eEXTERNAL_MANAGED\u003c/code\u003e,\n\u003ccode\u003eINTERNAL_MANAGED\u003c/code\u003e \u003ccode\u003eINTERNAL_SELF_MANAGED\u003c/code\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "dryRun",
                "name"
            ]
        },
        "gcp:compute/BackendServiceCdnPolicy:BackendServiceCdnPolicy": {
            "properties": {
                "bypassCacheOnRequestHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/BackendServiceCdnPolicyBypassCacheOnRequestHeader:BackendServiceCdnPolicyBypassCacheOnRequestHeader"
                    },
                    "description": "Bypass the cache when the specified request headers are matched - e.g. Pragma or Authorization headers. Up to 5 headers can be specified.\nThe cache is bypassed for all cdnPolicy.cacheMode settings.\nStructure is documented below.\n"
                },
                "cacheKeyPolicy": {
                    "$ref": "#/types/gcp:compute/BackendServiceCdnPolicyCacheKeyPolicy:BackendServiceCdnPolicyCacheKeyPolicy",
                    "description": "The CacheKeyPolicy for this CdnPolicy.\nStructure is documented below.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this backend.\nThe possible values are: USE_ORIGIN_HEADERS, FORCE_CACHE_ALL and CACHE_ALL_STATIC\nPossible values are: `USE_ORIGIN_HEADERS`, `FORCE_CACHE_ALL`, `CACHE_ALL_STATIC`.\n"
                },
                "clientTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin.\n"
                },
                "defaultTtl": {
                    "type": "integer",
                    "description": "Specifies the default TTL for cached content served by this origin for responses\nthat do not have an existing valid TTL (max-age or s-max-age).\n"
                },
                "maxTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply fine-grained caching for common errors or redirects.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/BackendServiceCdnPolicyNegativeCachingPolicy:BackendServiceCdnPolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching must be enabled to configure negativeCachingPolicy.\nOmitting the policy and leaving negativeCaching enabled will use Cloud CDN's default cache TTLs.\nStructure is documented below.\n"
                },
                "requestCoalescing": {
                    "type": "boolean",
                    "description": "If true then Cloud CDN will combine multiple concurrent cache fill requests into a small number of requests\nto the origin.\n"
                },
                "serveWhileStale": {
                    "type": "integer",
                    "description": "Serve existing content from the cache (if available) when revalidating content with the origin, or when an error is encountered when refreshing the cache.\n"
                },
                "signedUrlCacheMaxAgeSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the response to a signed URL request\nwill be considered fresh, defaults to 1hr (3600s). After this\ntime period, the response will be revalidated before\nbeing served.\nWhen serving responses to signed URL requests, Cloud CDN will\ninternally behave as though all responses from this backend had a\n\"Cache-Control: public, max-age=[TTL]\" header, regardless of any\nexisting Cache-Control header. The actual headers served in\nresponses will not be altered.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cacheMode",
                        "clientTtl",
                        "defaultTtl",
                        "maxTtl",
                        "negativeCaching",
                        "requestCoalescing",
                        "serveWhileStale"
                    ]
                }
            }
        },
        "gcp:compute/BackendServiceCdnPolicyBypassCacheOnRequestHeader:BackendServiceCdnPolicyBypassCacheOnRequestHeader": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The header field name to match on when bypassing cache. Values are case-insensitive.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName"
            ]
        },
        "gcp:compute/BackendServiceCdnPolicyCacheKeyPolicy:BackendServiceCdnPolicyCacheKeyPolicy": {
            "properties": {
                "includeHost": {
                    "type": "boolean",
                    "description": "If true requests to different hosts will be cached separately.\n"
                },
                "includeHttpHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP request headers (by name) to be used in the\ncache key.\n"
                },
                "includeNamedCookies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of cookies to include in cache keys.\n"
                },
                "includeProtocol": {
                    "type": "boolean",
                    "description": "If true, http and https requests will be cached separately.\n"
                },
                "includeQueryString": {
                    "type": "boolean",
                    "description": "If true, include query string parameters in the cache key\naccording to\u003cspan pulumi-lang-nodejs=\" queryStringWhitelist \" pulumi-lang-dotnet=\" QueryStringWhitelist \" pulumi-lang-go=\" queryStringWhitelist \" pulumi-lang-python=\" query_string_whitelist \" pulumi-lang-yaml=\" queryStringWhitelist \" pulumi-lang-java=\" queryStringWhitelist \" pulumi-lang-hcl=\" query_string_whitelist \"\u003e queryStringWhitelist \u003c/span\u003eand\nquery_string_blacklist. If neither is set, the entire query\nstring will be included.\nIf false, the query string will be excluded from the cache\nkey entirely.\n"
                },
                "queryStringBlacklists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to exclude in cache keys.\nAll other parameters will be included. Either specify\u003cspan pulumi-lang-nodejs=\"\nqueryStringWhitelist \" pulumi-lang-dotnet=\"\nQueryStringWhitelist \" pulumi-lang-go=\"\nqueryStringWhitelist \" pulumi-lang-python=\"\nquery_string_whitelist \" pulumi-lang-yaml=\"\nqueryStringWhitelist \" pulumi-lang-java=\"\nqueryStringWhitelist \" pulumi-lang-hcl=\"\nquery_string_whitelist \"\u003e\nqueryStringWhitelist \u003c/span\u003eor query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.\n"
                },
                "queryStringWhitelists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys.\nAll other parameters will be excluded. Either specify\u003cspan pulumi-lang-nodejs=\"\nqueryStringWhitelist \" pulumi-lang-dotnet=\"\nQueryStringWhitelist \" pulumi-lang-go=\"\nqueryStringWhitelist \" pulumi-lang-python=\"\nquery_string_whitelist \" pulumi-lang-yaml=\"\nqueryStringWhitelist \" pulumi-lang-java=\"\nqueryStringWhitelist \" pulumi-lang-hcl=\"\nquery_string_whitelist \"\u003e\nqueryStringWhitelist \u003c/span\u003eor query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceCdnPolicyNegativeCachingPolicy:BackendServiceCdnPolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 308, 404, 405, 410, 421, 451 and 501\ncan be specified as values, and you cannot specify a status code more than once.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s\n(30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceCircuitBreakers:BackendServiceCircuitBreakers": {
            "properties": {
                "connectTimeout": {
                    "$ref": "#/types/gcp:compute/BackendServiceCircuitBreakersConnectTimeout:BackendServiceCircuitBreakersConnectTimeout",
                    "description": "(Optional, Beta)\nThe timeout for new network connections to hosts.\nStructure is documented below.\n"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "The maximum number of connections to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxPendingRequests": {
                    "type": "integer",
                    "description": "The maximum number of pending requests to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxRequests": {
                    "type": "integer",
                    "description": "The maximum number of parallel requests to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxRequestsPerConnection": {
                    "type": "integer",
                    "description": "Maximum requests for a single backend connection. This parameter\nis respected by both the HTTP/1.1 and HTTP/2 implementations. If\nnot specified, there is no limit. Setting this parameter to 1\nwill effectively disable keep alive.\n"
                },
                "maxRetries": {
                    "type": "integer",
                    "description": "The maximum number of parallel retries to the backend cluster.\nDefaults to 3.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceCircuitBreakersConnectTimeout:BackendServiceCircuitBreakersConnectTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/BackendServiceConsistentHash:BackendServiceConsistentHash": {
            "properties": {
                "httpCookie": {
                    "$ref": "#/types/gcp:compute/BackendServiceConsistentHashHttpCookie:BackendServiceConsistentHashHttpCookie",
                    "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie\nthat will be used as the hash key for the consistent hash load\nbalancer. If the cookie is not present, it will be generated.\nThis field is applicable if the sessionAffinity is set to HTTP_COOKIE.\nStructure is documented below.\n"
                },
                "httpHeaderName": {
                    "type": "string",
                    "description": "The hash based on the value of the specified header field.\nThis field is applicable if the sessionAffinity is set to HEADER_FIELD.\n"
                },
                "minimumRingSize": {
                    "type": "integer",
                    "description": "The minimum number of virtual nodes to use for the hash ring.\nLarger ring sizes result in more granular load\ndistributions. If the number of hosts in the load balancing pool\nis larger than the ring size, each host will be assigned a single\nvirtual node.\nDefaults to 1024.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceConsistentHashHttpCookie:BackendServiceConsistentHashHttpCookie": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the cookie.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to set for the cookie.\n"
                },
                "ttl": {
                    "$ref": "#/types/gcp:compute/BackendServiceConsistentHashHttpCookieTtl:BackendServiceConsistentHashHttpCookieTtl",
                    "description": "Lifetime of the cookie.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceConsistentHashHttpCookieTtl:BackendServiceConsistentHashHttpCookieTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/BackendServiceCustomMetric:BackendServiceCustomMetric": {
            "properties": {
                "dryRun": {
                    "type": "boolean",
                    "description": "If true, the metric data is not used for load balancing.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of a custom utilization signal. The name must be 1-64 characters\nlong and match the regular expression a-z? which\nmeans the first character must be a lowercase letter, and all following\ncharacters must be a dash, period, underscore, lowercase letter, or\ndigit, except the last character, which cannot be a dash, period, or\nunderscore. For usage guidelines, see Custom Metrics balancing mode. This\nfield can only be used for a global or regional backend service with the\nloadBalancingScheme set to \u003ccode\u003eEXTERNAL_MANAGED\u003c/code\u003e,\n\u003ccode\u003eINTERNAL_MANAGED\u003c/code\u003e \u003ccode\u003eINTERNAL_SELF_MANAGED\u003c/code\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "dryRun",
                "name"
            ]
        },
        "gcp:compute/BackendServiceDynamicForwarding:BackendServiceDynamicForwarding": {
            "properties": {
                "ipPortSelection": {
                    "$ref": "#/types/gcp:compute/BackendServiceDynamicForwardingIpPortSelection:BackendServiceDynamicForwardingIpPortSelection",
                    "description": "(Optional, Beta)\nIP:PORT based dynamic forwarding configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceDynamicForwardingIpPortSelection:BackendServiceDynamicForwardingIpPortSelection": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "(Optional, Beta)\nA boolean flag enabling IP:PORT based dynamic forwarding.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceIamBindingCondition:BackendServiceIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/BackendServiceIamMemberCondition:BackendServiceIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/BackendServiceIap:BackendServiceIap": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.\n"
                },
                "oauth2ClientId": {
                    "type": "string",
                    "description": "OAuth2 Client ID for IAP\n"
                },
                "oauth2ClientSecret": {
                    "type": "string",
                    "description": "OAuth2 Client Secret for IAP\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "oauth2ClientSecretSha256": {
                    "type": "string",
                    "description": "(Output)\nOAuth2 Client Secret SHA-256 for IAP\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "oauth2ClientSecretSha256"
                    ]
                }
            }
        },
        "gcp:compute/BackendServiceLocalityLbPolicy:BackendServiceLocalityLbPolicy": {
            "properties": {
                "customPolicy": {
                    "$ref": "#/types/gcp:compute/BackendServiceLocalityLbPolicyCustomPolicy:BackendServiceLocalityLbPolicyCustomPolicy",
                    "description": "The configuration for a custom policy implemented by the user and\ndeployed with the client.\nStructure is documented below.\n"
                },
                "policy": {
                    "$ref": "#/types/gcp:compute/BackendServiceLocalityLbPolicyPolicy:BackendServiceLocalityLbPolicyPolicy",
                    "description": "The configuration for a built-in load balancing policy.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceLocalityLbPolicyCustomPolicy:BackendServiceLocalityLbPolicyCustomPolicy": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "An optional, arbitrary JSON object with configuration data, understood\nby a locally installed custom policy implementation.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Identifies the custom policy.\nThe value should match the type the custom implementation is registered\nwith on the gRPC clients. It should follow protocol buffer\nmessage naming conventions and include the full path (e.g.\nmyorg.CustomLbPolicy). The maximum length is 256 characters.\nNote that specifying the same custom policy more than once for a\nbackend is not a valid configuration and will be rejected.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/BackendServiceLocalityLbPolicyPolicy:BackendServiceLocalityLbPolicyPolicy": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of a locality load balancer policy to be used. The value\nshould be one of the predefined ones as supported by localityLbPolicy,\nalthough at the moment only ROUND_ROBIN is supported.\nThis field should only be populated when the customPolicy field is not\nused.\nNote that specifying the same policy more than once for a backend is\nnot a valid configuration and will be rejected.\nThe possible values are:\n* `ROUND_ROBIN`: This is a simple policy in which each healthy backend\nis selected in round robin order.\n* `LEAST_REQUEST`: An O(1) algorithm which selects two random healthy\nhosts and picks the host which has fewer active requests.\n* `RING_HASH`: The ring/modulo hash load balancer implements consistent\nhashing to backends. The algorithm has the property that the\naddition/removal of a host from a set of N hosts only affects\n1/N of the requests.\n* `RANDOM`: The load balancer selects a random healthy host.\n* `ORIGINAL_DESTINATION`: Backend host is selected based on the client\nconnection metadata, i.e., connections are opened\nto the same address as the destination address of\nthe incoming connection before the connection\nwas redirected to the load balancer.\n* `MAGLEV`: used as a drop in replacement for the ring hash load balancer.\nMaglev is not as stable as ring hash but has faster table lookup\nbuild times and host selection times. For more information about\nMaglev, refer to https://ai.google/research/pubs/pub44824\nPossible values are: `ROUND_ROBIN`, `LEAST_REQUEST`, `RING_HASH`, `RANDOM`, `ORIGINAL_DESTINATION`, `MAGLEV`.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/BackendServiceLogConfig:BackendServiceLogConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "Whether to enable logging for the load balancer traffic served by this backend service.\n"
                },
                "optionalFields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "This field can only be specified if logging is enabled for this backend service and \"logConfig.optionalMode\"\nwas set to CUSTOM. Contains a list of optional fields you want to include in the logs.\nFor example: serverInstance, serverGkeDetails.cluster, serverGkeDetails.pod.podNamespace\nFor example: orca_load_report, tls.protocol\n"
                },
                "optionalMode": {
                    "type": "string",
                    "description": "Specifies the optional logging mode for the load balancer traffic.\nSupported values: INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM.\nPossible values are: `INCLUDE_ALL_OPTIONAL`, `EXCLUDE_ALL_OPTIONAL`, `CUSTOM`.\n"
                },
                "sampleRate": {
                    "type": "number",
                    "description": "This field can only be specified if logging is enabled for this backend service. The value of\nthe field must be in [0, 1]. This configures the sampling rate of requests to the load balancer\nwhere 1.0 means all logged requests are reported and 0.0 means no logged requests are reported.\nThe default value is 1.0.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "optionalMode"
                    ]
                }
            }
        },
        "gcp:compute/BackendServiceMaxStreamDuration:BackendServiceMaxStreamDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\nDurations less than one second are represented with a 0 seconds field and a positive nanos field.\nMust be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. (int64 format)\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/BackendServiceNetworkPassThroughLbTrafficPolicy:BackendServiceNetworkPassThroughLbTrafficPolicy": {
            "properties": {
                "zonalAffinity": {
                    "$ref": "#/types/gcp:compute/BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity:BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity",
                    "description": "When configured, new connections are load balanced across healthy backend endpoints in the local zone.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity:BackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity": {
            "properties": {
                "spillover": {
                    "type": "string",
                    "description": "(Optional, Beta)\nThis field indicates whether zonal affinity is enabled or not.\nDefault value is `ZONAL_AFFINITY_DISABLED`.\nPossible values are: `ZONAL_AFFINITY_DISABLED`, `ZONAL_AFFINITY_SPILL_CROSS_ZONE`, `ZONAL_AFFINITY_STAY_WITHIN_ZONE`.\n"
                },
                "spilloverRatio": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe value of the field must be in [0, 1]. When the ratio of the count of healthy backend endpoints in a zone\nto the count of backend endpoints in that same zone is equal to or above this threshold, the load balancer\ndistributes new connections to all healthy endpoints in the local zone only. When the ratio of the count\nof healthy backend endpoints in a zone to the count of backend endpoints in that same zone is below this\nthreshold, the load balancer distributes all new connections to all healthy endpoints across all zones.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceOutlierDetection:BackendServiceOutlierDetection": {
            "properties": {
                "baseEjectionTime": {
                    "$ref": "#/types/gcp:compute/BackendServiceOutlierDetectionBaseEjectionTime:BackendServiceOutlierDetectionBaseEjectionTime",
                    "description": "The base time that a host is ejected for. The real time is equal to the base\ntime multiplied by the number of times the host has been ejected. Defaults to\n30000ms or 30s.\nStructure is documented below.\n"
                },
                "consecutiveErrors": {
                    "type": "integer",
                    "description": "Number of errors before a host is ejected from the connection pool. When the\nbackend host is accessed over HTTP, a 5xx return code qualifies as an error.\nDefaults to 5.\n"
                },
                "consecutiveGatewayFailure": {
                    "type": "integer",
                    "description": "The number of consecutive gateway failures (502, 503, 504 status or connection\nerrors that are mapped to one of those status codes) before a consecutive\ngateway failure ejection occurs. Defaults to 5.\n"
                },
                "enforcingConsecutiveErrors": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive 5xx. This setting can be used to disable\nejection or to ramp it up slowly. Defaults to 100.\n"
                },
                "enforcingConsecutiveGatewayFailure": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive gateway failures. This setting can be\nused to disable ejection or to ramp it up slowly. Defaults to 0.\n"
                },
                "enforcingSuccessRate": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through success rate statistics. This setting can be used to\ndisable ejection or to ramp it up slowly. Defaults to 100.\n"
                },
                "interval": {
                    "$ref": "#/types/gcp:compute/BackendServiceOutlierDetectionInterval:BackendServiceOutlierDetectionInterval",
                    "description": "Time interval between ejection sweep analysis. This can result in both new\nejections as well as hosts being returned to service. Defaults to 10 seconds.\nStructure is documented below.\n"
                },
                "maxEjectionPercent": {
                    "type": "integer",
                    "description": "Maximum percentage of hosts in the load balancing pool for the backend service\nthat can be ejected. Defaults to 10%.\n"
                },
                "successRateMinimumHosts": {
                    "type": "integer",
                    "description": "The number of hosts in a cluster that must have enough request volume to detect\nsuccess rate outliers. If the number of hosts is less than this setting, outlier\ndetection via success rate statistics is not performed for any host in the\ncluster. Defaults to 5.\n"
                },
                "successRateRequestVolume": {
                    "type": "integer",
                    "description": "The minimum number of total requests that must be collected in one interval (as\ndefined by the interval duration above) to include this host in success rate\nbased outlier detection. If the volume is lower than this setting, outlier\ndetection via success rate statistics is not performed for that host. Defaults\nto 100.\n"
                },
                "successRateStdevFactor": {
                    "type": "integer",
                    "description": "This factor is used to determine the ejection threshold for success rate outlier\nejection. The ejection threshold is the difference between the mean success\nrate, and the product of this factor and the standard deviation of the mean\nsuccess rate: mean - (stdev * success_rate_stdev_factor). This factor is divided\nby a thousand to get a double. That is, if the desired factor is 1.9, the\nruntime value should be 1900. Defaults to 1900.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceOutlierDetectionBaseEjectionTime:BackendServiceOutlierDetectionBaseEjectionTime": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 \u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive\n\u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/BackendServiceOutlierDetectionInterval:BackendServiceOutlierDetectionInterval": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 \u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive\n\u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/BackendServiceParams:BackendServiceParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the backend service. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceSecuritySettings:BackendServiceSecuritySettings": {
            "properties": {
                "awsV4Authentication": {
                    "$ref": "#/types/gcp:compute/BackendServiceSecuritySettingsAwsV4Authentication:BackendServiceSecuritySettingsAwsV4Authentication",
                    "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication.\nAllowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedSecuritySettingsAwsV4Authentication\"\" pulumi-lang-dotnet=\"\"NestedSecuritySettingsAwsV4Authentication\"\" pulumi-lang-go=\"\"nestedSecuritySettingsAwsV4Authentication\"\" pulumi-lang-python=\"\"nested_security_settings_aws_v4_authentication\"\" pulumi-lang-yaml=\"\"nestedSecuritySettingsAwsV4Authentication\"\" pulumi-lang-java=\"\"nestedSecuritySettingsAwsV4Authentication\"\" pulumi-lang-hcl=\"\"nested_security_settings_aws_v4_authentication\"\"\u003e\"nestedSecuritySettingsAwsV4Authentication\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`awsV4Authentication`\" pulumi-lang-dotnet=\"`AwsV4Authentication`\" pulumi-lang-go=\"`awsV4Authentication`\" pulumi-lang-python=\"`aws_v4_authentication`\" pulumi-lang-yaml=\"`awsV4Authentication`\" pulumi-lang-java=\"`awsV4Authentication`\" pulumi-lang-hcl=\"`aws_v4_authentication`\"\u003e`awsV4Authentication`\u003c/span\u003e block supports:\n"
                },
                "clientTlsPolicy": {
                    "type": "string",
                    "description": "ClientTlsPolicy is a resource that specifies how a client should authenticate\nconnections to backends of a service. This resource itself does not affect\nconfiguration unless it is attached to a backend service resource.\n"
                },
                "subjectAltNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of alternate names to verify the subject identity in the certificate.\nIf specified, the client will verify that the server certificate's subject\nalt name matches one of the specified values.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceSecuritySettingsAwsV4Authentication:BackendServiceSecuritySettingsAwsV4Authentication": {
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key used for s3 bucket authentication.\nRequired for updating or creating a backend that uses AWS v4 signature authentication, but will not be returned as part of the configuration when queried with a REST API GET request.\n",
                    "secret": true
                },
                "accessKeyId": {
                    "type": "string",
                    "description": "The identifier of an access key used for s3 bucket authentication.\n"
                },
                "accessKeyVersion": {
                    "type": "string",
                    "description": "The optional version identifier for the access key. You can use this to keep track of different iterations of your access key.\n"
                },
                "originRegion": {
                    "type": "string",
                    "description": "The name of the cloud region of your origin. This is a free-form field with the name of the region your cloud uses to host your origin.\nFor example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceStrongSessionAffinityCookie:BackendServiceStrongSessionAffinityCookie": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the cookie.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to set for the cookie.\n"
                },
                "ttl": {
                    "$ref": "#/types/gcp:compute/BackendServiceStrongSessionAffinityCookieTtl:BackendServiceStrongSessionAffinityCookieTtl",
                    "description": "Lifetime of the cookie.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceStrongSessionAffinityCookieTtl:BackendServiceStrongSessionAffinityCookieTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/BackendServiceTlsSettings:BackendServiceTlsSettings": {
            "properties": {
                "authenticationConfig": {
                    "type": "string",
                    "description": "Reference to the BackendAuthenticationConfig resource from the networksecurity.googleapis.com namespace.\nCan be used in authenticating TLS connections to the backend, as specified by the authenticationMode field.\nCan only be specified if authenticationMode is not NONE.\n"
                },
                "sni": {
                    "type": "string",
                    "description": "Server Name Indication - see RFC3546 section 3.1. If set, the load balancer sends this string as the SNI hostname in the\nTLS connection to the backend, and requires that this string match a Subject Alternative Name (SAN) in the backend's\nserver certificate. With a Regional Internet NEG backend, if the SNI is specified here, the load balancer uses it\nregardless of whether the Regional Internet NEG is specified with FQDN or IP address and port.\n"
                },
                "subjectAltNames": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/BackendServiceTlsSettingsSubjectAltName:BackendServiceTlsSettingsSubjectAltName"
                    },
                    "description": "A list of Subject Alternative Names (SANs) that the Load Balancer verifies during a TLS handshake with the backend.\nWhen the server presents its X.509 certificate to the Load Balancer, the Load Balancer inspects the certificate's SAN field,\nand requires that at least one SAN match one of the subjectAltNames in the list. This field is limited to 5 entries.\nWhen both sni and subjectAltNames are specified, the load balancer matches the backend certificate's SAN only to\nsubjectAltNames.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/BackendServiceTlsSettingsSubjectAltName:BackendServiceTlsSettingsSubjectAltName": {
            "properties": {
                "dnsName": {
                    "type": "string",
                    "description": "The SAN specified as a DNS Name.\n"
                },
                "uniformResourceIdentifier": {
                    "type": "string",
                    "description": "The SAN specified as a URI.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/DiskAsyncPrimaryDisk:DiskAsyncPrimaryDisk": {
            "properties": {
                "disk": {
                    "type": "string",
                    "description": "Primary disk for asynchronous disk replication.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "disk"
            ]
        },
        "gcp:compute/DiskAsyncReplicationSecondaryDisk:DiskAsyncReplicationSecondaryDisk": {
            "properties": {
                "disk": {
                    "type": "string",
                    "description": "The secondary disk.\n",
                    "willReplaceOnChanges": true
                },
                "state": {
                    "type": "string",
                    "description": "Output-only. Status of replication on the secondary disk.\n\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "disk"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "disk",
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/DiskDiskEncryptionKey:DiskDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n(`service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com`) must have\n`roles/cloudkms.cryptoKeyEncrypterDecrypter` to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "(Output)\nThe RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/DiskGuestOsFeature:DiskGuestOsFeature": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "The type of supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/DiskIamBindingCondition:DiskIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/DiskIamMemberCondition:DiskIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/DiskParams:DiskParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the disk. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/DiskSourceImageEncryptionKey:DiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n(`service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com`) must have\n`roles/cloudkms.cryptoKeyEncrypterDecrypter` to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "(Output)\nThe RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/DiskSourceSnapshotEncryptionKey:DiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n(`service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com`) must have\n`roles/cloudkms.cryptoKeyEncrypterDecrypter` to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "(Output)\nThe RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/ExternalVpnGatewayInterface:ExternalVpnGatewayInterface": {
            "properties": {
                "id": {
                    "type": "integer",
                    "description": "The numeric ID for this interface. Allowed values are based on the redundancy type\nof this external VPN gateway\n* `0 - SINGLE_IP_INTERNALLY_REDUNDANT`\n* `0, 1 - TWO_IPS_REDUNDANCY`\n* `0, 1, 2, 3 - FOUR_IPS_REDUNDANCY`\n",
                    "willReplaceOnChanges": true
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IP address of the interface in the external VPN gateway.\nOnly IPv4 is supported. This IP address can be either from\nyour on-premise gateway or another Cloud provider's VPN gateway,\nit cannot be an IP address from Google Compute Engine.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "IPv6 address of the interface in the external VPN gateway. This IPv6\naddress can be either from your on-premise gateway or another Cloud\nprovider's VPN gateway, it cannot be an IP address from Google Compute\nEngine. Must specify an IPv6 address (not IPV4-mapped) using any format\ndescribed in RFC 4291 (e.g. 2001:db8:0:0:2d9:51:0:0). The output format\nis RFC 5952 format (e.g. 2001:db8::2d9:51:0:0).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/ExternalVpnGatewayParams:ExternalVpnGatewayParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the ExternalVpnGateway. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/FirewallAllow:FirewallAllow": {
            "properties": {
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\nExample inputs include: [22], [80, 443], and\n[\"12345-12349\"].\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The IP protocol to which this rule applies. The protocol type is\nrequired when creating a firewall rule. This value can either be\none of the following well known protocol strings (tcp, udp,\nicmp, esp, ah, sctp, ipip, all), or the IP protocol number.\n"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ]
        },
        "gcp:compute/FirewallDeny:FirewallDeny": {
            "properties": {
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\nExample inputs include: [22], [80, 443], and\n[\"12345-12349\"].\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The IP protocol to which this rule applies. The protocol type is\nrequired when creating a firewall rule. This value can either be\none of the following well known protocol strings (tcp, udp,\nicmp, esp, ah, sctp, ipip, all), or the IP protocol number.\n"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ]
        },
        "gcp:compute/FirewallLogConfig:FirewallLogConfig": {
            "properties": {
                "metadata": {
                    "type": "string",
                    "description": "This field denotes whether to include or exclude metadata for firewall logs.\nPossible values are: `EXCLUDE_ALL_METADATA`, `INCLUDE_ALL_METADATA`.\n"
                }
            },
            "type": "object",
            "required": [
                "metadata"
            ]
        },
        "gcp:compute/FirewallParams:FirewallParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the firewall. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456. The field is ignored when empty.\nThe field is immutable and causes resource replacement when mutated. This field is only\nset at create time and modifying this field after creation will trigger recreation.\nTo apply tags to an existing resource, see the\u003cspan pulumi-lang-nodejs=\" gcp.tags.TagBinding \" pulumi-lang-dotnet=\" gcp.tags.TagBinding \" pulumi-lang-go=\" tags.TagBinding \" pulumi-lang-python=\" tags.TagBinding \" pulumi-lang-yaml=\" gcp.tags.TagBinding \" pulumi-lang-java=\" gcp.tags.TagBinding \" pulumi-lang-hcl=\" google_tags_tag_binding \"\u003e gcp.tags.TagBinding \u003c/span\u003eresource.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FirewallPolicyRuleMatch:FirewallPolicyRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.\n"
                },
                "destNetworkContext": {
                    "type": "string",
                    "description": "Network context of the traffic destination.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic destination.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of dest region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyRuleMatchLayer4Config:FirewallPolicyRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.\n"
                },
                "srcNetworkContext": {
                    "type": "string",
                    "description": "Network context of the traffic source.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic source.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Networks of the traffic source. It can be either a full or partial url.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyRuleMatchSrcSecureTag:FirewallPolicyRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-dotnet=\"\"NestedMatchLayer4Configs\"\" pulumi-lang-go=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-python=\"\"nested_match_layer4_configs\"\" pulumi-lang-yaml=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-java=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-hcl=\"\"nested_match_layer4_configs\"\"\u003e\"nestedMatchLayer4Configs\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Configs`\" pulumi-lang-dotnet=\"`Layer4Configs`\" pulumi-lang-go=\"`layer4Configs`\" pulumi-lang-python=\"`layer4_configs`\" pulumi-lang-yaml=\"`layer4Configs`\" pulumi-lang-java=\"`layer4Configs`\" pulumi-lang-hcl=\"`layer4_configs`\"\u003e`layer4Configs`\u003c/span\u003e block supports:\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n"
                }
            },
            "type": "object",
            "required": [
                "layer4Configs"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destNetworkContext",
                        "destNetworkScope",
                        "layer4Configs",
                        "srcNetworkContext",
                        "srcNetworkScope"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyRuleMatchLayer4Config:FirewallPolicyRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule.\nThis value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "required": [
                "ipProtocol"
            ]
        },
        "gcp:compute/FirewallPolicyRuleMatchSrcSecureTag:FirewallPolicyRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyRuleTargetSecureTag:FirewallPolicyRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyWithRulesPredefinedRule:FirewallPolicyWithRulesPredefinedRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "(Output)\nThe Action to perform when the client connection triggers the rule. Can currently be either\n\"allow\", \"deny\", \u003cspan pulumi-lang-nodejs=\"\"applySecurityProfileGroup\"\" pulumi-lang-dotnet=\"\"ApplySecurityProfileGroup\"\" pulumi-lang-go=\"\"applySecurityProfileGroup\"\" pulumi-lang-python=\"\"apply_security_profile_group\"\" pulumi-lang-yaml=\"\"applySecurityProfileGroup\"\" pulumi-lang-java=\"\"applySecurityProfileGroup\"\" pulumi-lang-hcl=\"\"apply_security_profile_group\"\"\u003e\"applySecurityProfileGroup\"\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"\"gotoNext\"\" pulumi-lang-dotnet=\"\"GotoNext\"\" pulumi-lang-go=\"\"gotoNext\"\" pulumi-lang-python=\"\"goto_next\"\" pulumi-lang-yaml=\"\"gotoNext\"\" pulumi-lang-java=\"\"gotoNext\"\" pulumi-lang-hcl=\"\"goto_next\"\"\u003e\"gotoNext\"\u003c/span\u003e.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "(Output)\nThe direction in which this rule applies. If unspecified an INGRESS rule is created.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nDenotes whether the firewall policy rule is disabled. When set to true,\nthe firewall policy rule is not enforced and traffic behaves as if it did\nnot exist. If this is unspecified, the firewall policy rule will be\nenabled.\n"
                },
                "enableLogging": {
                    "type": "boolean",
                    "description": "(Output)\nDenotes whether to enable logging for a particular rule.\nIf logging is enabled, logs will be exported to the\nconfigured export destination in Stackdriver.\n"
                },
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesPredefinedRuleMatch:FirewallPolicyWithRulesPredefinedRuleMatch"
                    },
                    "description": "(Output)\nA match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "(Output)\nAn integer indicating the priority of a rule in the list. The priority must be a value\nbetween 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the\nhighest priority and 2147483647 is the lowest priority.\n"
                },
                "ruleName": {
                    "type": "string",
                    "description": "(Output)\nAn optional name for the rule. This field is not a unique identifier\nand can be updated.\n"
                },
                "securityProfileGroup": {
                    "type": "string",
                    "description": "(Output)\nA fully-qualified URL of a SecurityProfile resource instance.\nExample:\nhttps://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group\nMust be specified if action is 'apply_security_profile_group'.\n"
                },
                "targetResources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nA list of network resource URLs to which this rule applies.\nThis field allows you to control which network's VMs get\nthis rule. If this field is left blank, all VMs\nwithin the organization will receive the rule.\n"
                },
                "targetSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesPredefinedRuleTargetSecureTag:FirewallPolicyWithRulesPredefinedRuleTargetSecureTag"
                    },
                    "description": "(Output)\nA list of secure tags that controls which instances the firewall rule\napplies to. If \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, then the\nfirewall rule applies only to instances in the VPC network that have one\nof those EFFECTIVE secure tags, if all the\u003cspan pulumi-lang-nodejs=\" targetSecureTag \" pulumi-lang-dotnet=\" TargetSecureTag \" pulumi-lang-go=\" targetSecureTag \" pulumi-lang-python=\" target_secure_tag \" pulumi-lang-yaml=\" targetSecureTag \" pulumi-lang-java=\" targetSecureTag \" pulumi-lang-hcl=\" target_secure_tag \"\u003e targetSecureTag \u003c/span\u003eare in\nINEFFECTIVE state, then this rule will be ignored.\n\u003ccode\u003etargetSecureTag\u003c/code\u003e may not be set at the same time as\n\u003ccode\u003etargetServiceAccounts\u003c/code\u003e.\nIf neither \u003ccode\u003etargetServiceAccounts\u003c/code\u003e nor\n\u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, the firewall rule applies\nto all instances on the specified network.\nMaximum number of target secure tags allowed is 256.\nStructure is documented below.\n"
                },
                "targetServiceAccounts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nA list of service accounts indicating the sets of\ninstances that are applied with this rule.\n"
                },
                "tlsInspect": {
                    "type": "boolean",
                    "description": "(Output)\nBoolean flag indicating if the traffic should be TLS decrypted.\nIt can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "description",
                        "direction",
                        "disabled",
                        "enableLogging",
                        "matches",
                        "priority",
                        "ruleName",
                        "securityProfileGroup",
                        "targetResources",
                        "targetSecureTags",
                        "targetServiceAccounts",
                        "tlsInspect"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyWithRulesPredefinedRuleMatch:FirewallPolicyWithRulesPredefinedRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination.\nMaximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Destination IP address range in CIDR format. Required for\nEGRESS rules.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of destination region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config:FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source.\nMaximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source IP address range in CIDR format. Required for\nINGRESS rules.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag:FirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic source.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destAddressGroups",
                        "destFqdns",
                        "destIpRanges",
                        "destRegionCodes",
                        "destThreatIntelligences",
                        "layer4Configs",
                        "srcAddressGroups",
                        "srcFqdns",
                        "srcIpRanges",
                        "srcRegionCodes",
                        "srcSecureTags",
                        "srcThreatIntelligences"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config:FirewallPolicyWithRulesPredefinedRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "(Output)\nThe IP protocol to which this rule applies. The protocol\ntype is required when creating a firewall rule.\nThis value can either be one of the following well\nknown protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp),\nor the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nAn optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipProtocol",
                        "ports"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag:FirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-dotnet=\"\"NestedRuleMatchLayer4Config\"\" pulumi-lang-go=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-python=\"\"nested_rule_match_layer4_config\"\" pulumi-lang-yaml=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-java=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-hcl=\"\"nested_rule_match_layer4_config\"\"\u003e\"nestedRuleMatchLayer4Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Config`\" pulumi-lang-dotnet=\"`Layer4Config`\" pulumi-lang-go=\"`layer4Config`\" pulumi-lang-python=\"`layer4_config`\" pulumi-lang-yaml=\"`layer4Config`\" pulumi-lang-java=\"`layer4Config`\" pulumi-lang-hcl=\"`layer4_config`\"\u003e`layer4Config`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyWithRulesPredefinedRuleTargetSecureTag:FirewallPolicyWithRulesPredefinedRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyWithRulesRule:FirewallPolicyWithRulesRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The Action to perform when the client connection triggers the rule. Can currently be either\n\"allow\", \"deny\", \u003cspan pulumi-lang-nodejs=\"\"applySecurityProfileGroup\"\" pulumi-lang-dotnet=\"\"ApplySecurityProfileGroup\"\" pulumi-lang-go=\"\"applySecurityProfileGroup\"\" pulumi-lang-python=\"\"apply_security_profile_group\"\" pulumi-lang-yaml=\"\"applySecurityProfileGroup\"\" pulumi-lang-java=\"\"applySecurityProfileGroup\"\" pulumi-lang-hcl=\"\"apply_security_profile_group\"\"\u003e\"applySecurityProfileGroup\"\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"\"gotoNext\"\" pulumi-lang-dotnet=\"\"GotoNext\"\" pulumi-lang-go=\"\"gotoNext\"\" pulumi-lang-python=\"\"goto_next\"\" pulumi-lang-yaml=\"\"gotoNext\"\" pulumi-lang-java=\"\"gotoNext\"\" pulumi-lang-hcl=\"\"goto_next\"\"\u003e\"gotoNext\"\u003c/span\u003e.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the rule.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "The direction in which this rule applies. If unspecified an INGRESS rule is created.\nPossible values are: `INGRESS`, `EGRESS`.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Denotes whether the firewall policy rule is disabled. When set to true,\nthe firewall policy rule is not enforced and traffic behaves as if it did\nnot exist. If this is unspecified, the firewall policy rule will be\nenabled.\n"
                },
                "enableLogging": {
                    "type": "boolean",
                    "description": "Denotes whether to enable logging for a particular rule.\nIf logging is enabled, logs will be exported to the\nconfigured export destination in Stackdriver.\n"
                },
                "match": {
                    "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesRuleMatch:FirewallPolicyWithRulesRuleMatch",
                    "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "An integer indicating the priority of a rule in the list. The priority must be a value\nbetween 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the\nhighest priority and 2147483647 is the lowest priority.\n"
                },
                "ruleName": {
                    "type": "string",
                    "description": "An optional name for the rule. This field is not a unique identifier\nand can be updated.\n"
                },
                "securityProfileGroup": {
                    "type": "string",
                    "description": "A fully-qualified URL of a SecurityProfile resource instance.\nExample:\nhttps://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group\nMust be specified if action is 'apply_security_profile_group'.\n"
                },
                "targetResources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of network resource URLs to which this rule applies.\nThis field allows you to control which network's VMs get\nthis rule. If this field is left blank, all VMs\nwithin the organization will receive the rule.\n"
                },
                "targetSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesRuleTargetSecureTag:FirewallPolicyWithRulesRuleTargetSecureTag"
                    },
                    "description": "A list of secure tags that controls which instances the firewall rule\napplies to. If \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, then the\nfirewall rule applies only to instances in the VPC network that have one\nof those EFFECTIVE secure tags, if all the\u003cspan pulumi-lang-nodejs=\" targetSecureTag \" pulumi-lang-dotnet=\" TargetSecureTag \" pulumi-lang-go=\" targetSecureTag \" pulumi-lang-python=\" target_secure_tag \" pulumi-lang-yaml=\" targetSecureTag \" pulumi-lang-java=\" targetSecureTag \" pulumi-lang-hcl=\" target_secure_tag \"\u003e targetSecureTag \u003c/span\u003eare in\nINEFFECTIVE state, then this rule will be ignored.\n\u003ccode\u003etargetSecureTag\u003c/code\u003e may not be set at the same time as\n\u003ccode\u003etargetServiceAccounts\u003c/code\u003e.\nIf neither \u003ccode\u003etargetServiceAccounts\u003c/code\u003e nor\n\u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, the firewall rule applies\nto all instances on the specified network.\nMaximum number of target secure tags allowed is 256.\nStructure is documented below.\n"
                },
                "targetServiceAccounts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service accounts indicating the sets of\ninstances that are applied with this rule.\n"
                },
                "tlsInspect": {
                    "type": "boolean",
                    "description": "Boolean flag indicating if the traffic should be TLS decrypted.\nIt can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "match",
                "priority"
            ]
        },
        "gcp:compute/FirewallPolicyWithRulesRuleMatch:FirewallPolicyWithRulesRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination.\nMaximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Destination IP address range in CIDR format. Required for\nEGRESS rules.\n"
                },
                "destNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic destination.\nPossible values are: `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of destination region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesRuleMatchLayer4Config:FirewallPolicyWithRulesRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source.\nMaximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source IP address range in CIDR format. Required for\nINGRESS rules.\n"
                },
                "srcNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic source.\nPossible values are: `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional, Beta)\nNetworks of the traffic source. It can be either a full or partial url.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FirewallPolicyWithRulesRuleMatchSrcSecureTag:FirewallPolicyWithRulesRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic source.\n"
                }
            },
            "type": "object",
            "required": [
                "layer4Configs"
            ]
        },
        "gcp:compute/FirewallPolicyWithRulesRuleMatchLayer4Config:FirewallPolicyWithRulesRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "(Output)\nThe IP protocol to which this rule applies. The protocol\ntype is required when creating a firewall rule.\nThis value can either be one of the following well\nknown protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp),\nor the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nAn optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "required": [
                "ipProtocol"
            ]
        },
        "gcp:compute/FirewallPolicyWithRulesRuleMatchSrcSecureTag:FirewallPolicyWithRulesRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-dotnet=\"\"NestedRuleMatchLayer4Config\"\" pulumi-lang-go=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-python=\"\"nested_rule_match_layer4_config\"\" pulumi-lang-yaml=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-java=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-hcl=\"\"nested_rule_match_layer4_config\"\"\u003e\"nestedRuleMatchLayer4Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Config`\" pulumi-lang-dotnet=\"`Layer4Config`\" pulumi-lang-go=\"`layer4Config`\" pulumi-lang-python=\"`layer4_config`\" pulumi-lang-yaml=\"`layer4Config`\" pulumi-lang-java=\"`layer4Config`\" pulumi-lang-hcl=\"`layer4_config`\"\u003e`layer4Config`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/FirewallPolicyWithRulesRuleTargetSecureTag:FirewallPolicyWithRulesRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/ForwardingRuleServiceDirectoryRegistrations:ForwardingRuleServiceDirectoryRegistrations": {
            "properties": {
                "namespace": {
                    "type": "string",
                    "description": "Service Directory namespace to register the forwarding rule under.\n",
                    "willReplaceOnChanges": true
                },
                "service": {
                    "type": "string",
                    "description": "Service Directory service to register the forwarding rule under.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "namespace"
                    ]
                }
            }
        },
        "gcp:compute/FutureReservationAggregateReservation:FutureReservationAggregateReservation": {
            "properties": {
                "reservedResources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FutureReservationAggregateReservationReservedResource:FutureReservationAggregateReservationReservedResource"
                    },
                    "description": "futureReservations.list of reserved resources (CPUs, memory, accelerators).\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "vmFamily": {
                    "type": "string",
                    "description": "The VM family that all instances scheduled against this reservation must belong to.\nPossible values are: `VM_FAMILY_CLOUD_TPU_DEVICE_CT3`, `VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L`, `VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP`, `VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT6E`, `VM_FAMILY_CLOUD_TPU_POD_SLICE_CT3P`, `VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P`, `VM_FAMILY_CLOUD_TPU_POD_SLICE_CT5P`.\n",
                    "willReplaceOnChanges": true
                },
                "workloadType": {
                    "type": "string",
                    "description": "The workload type of the instances that will target this reservation.\nPossible values are: `BATCH`, `SERVING`, `UNSPECIFIED`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "reservedResources"
            ]
        },
        "gcp:compute/FutureReservationAggregateReservationReservedResource:FutureReservationAggregateReservationReservedResource": {
            "properties": {
                "accelerator": {
                    "$ref": "#/types/gcp:compute/FutureReservationAggregateReservationReservedResourceAccelerator:FutureReservationAggregateReservationReservedResourceAccelerator",
                    "description": "Properties of accelerator resources in this reservation.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationAggregateReservationReservedResourceAccelerator:FutureReservationAggregateReservationReservedResourceAccelerator": {
            "properties": {
                "acceleratorCount": {
                    "type": "integer",
                    "description": "Number of accelerators of specified type.\n",
                    "willReplaceOnChanges": true
                },
                "acceleratorType": {
                    "type": "string",
                    "description": "Full or partial URL to accelerator type. e.g. \"projects/{PROJECT}/zones/{ZONE}/acceleratorTypes/ct4l\"\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationAutoCreatedReservationsDuration:FutureReservationAutoCreatedReservationsDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationCommitmentInfo:FutureReservationCommitmentInfo": {
            "properties": {
                "commitmentName": {
                    "type": "string",
                    "description": "name of the commitment where capacity is being delivered to.\n"
                },
                "commitmentPlan": {
                    "type": "string",
                    "description": "Indicates if a Commitment needs to be created as part of FR delivery. If this field is not present, then no commitment needs to be created.\nPossible values are: `INVALID`, `THIRTY_SIX_MONTH`, `TWELVE_MONTH`.\n"
                },
                "previousCommitmentTerms": {
                    "type": "string",
                    "description": "Only applicable if FR is delivering to the same reservation. If set, all parent commitments will be extended to match the end date of the plan for this commitment.\nPossible values are: `EXTEND`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationParams:FutureReservationParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the future reservation. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationShareSettings:FutureReservationShareSettings": {
            "properties": {
                "projectMaps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FutureReservationShareSettingsProjectMap:FutureReservationShareSettingsProjectMap"
                    },
                    "description": "A map of project id and project config. This is only valid when shareType's value is SPECIFIC_PROJECTS.\nStructure is documented below.\n"
                },
                "projects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "list of Project names to specify consumer projects for this shared-reservation. This is only valid when shareType's value is SPECIFIC_PROJECTS.\n"
                },
                "shareType": {
                    "type": "string",
                    "description": "Type of sharing for this future reservation.\nPossible values are: `LOCAL`, `SPECIFIC_PROJECTS`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "shareType"
                    ]
                }
            }
        },
        "gcp:compute/FutureReservationShareSettingsProjectMap:FutureReservationShareSettingsProjectMap": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project ID, should be same as the key of this project config in the parent map.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:compute/FutureReservationSpecificSkuProperties:FutureReservationSpecificSkuProperties": {
            "properties": {
                "instanceProperties": {
                    "$ref": "#/types/gcp:compute/FutureReservationSpecificSkuPropertiesInstanceProperties:FutureReservationSpecificSkuPropertiesInstanceProperties",
                    "description": "Properties of the SKU instances being reserved.\nStructure is documented below.\n"
                },
                "sourceInstanceTemplate": {
                    "type": "string",
                    "description": "The instance template that will be used to populate the ReservedInstanceProperties of the future reservation\n"
                },
                "totalCount": {
                    "type": "string",
                    "description": "Total number of instances for which capacity assurance is requested at a future time period.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationSpecificSkuPropertiesInstanceProperties:FutureReservationSpecificSkuPropertiesInstanceProperties": {
            "properties": {
                "guestAccelerators": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FutureReservationSpecificSkuPropertiesInstancePropertiesGuestAccelerator:FutureReservationSpecificSkuPropertiesInstancePropertiesGuestAccelerator"
                    },
                    "description": "Specifies accelerator type and count.\nStructure is documented below.\n"
                },
                "localSsds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FutureReservationSpecificSkuPropertiesInstancePropertiesLocalSsd:FutureReservationSpecificSkuPropertiesInstancePropertiesLocalSsd"
                    },
                    "description": "Specifies amount of local ssd to reserve with each instance. The type of disk is local-ssd.\nStructure is documented below.\n"
                },
                "locationHint": {
                    "type": "string",
                    "description": "An opaque location hint used to place the allocation close to other resources. This field is for use by internal tools that use the public API.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "Specifies type of machine (name only) which has fixed number of vCPUs and fixed amount of memory. This also includes specifying custom machine type following custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY pattern.\n"
                },
                "maintenanceFreezeDurationHours": {
                    "type": "integer",
                    "description": "Specifies the number of hours after reservation creation where instances using the reservation won't be scheduled for maintenance.\n"
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC\nPossible values are: `PERIODIC`.\n"
                },
                "minCpuPlatform": {
                    "type": "string",
                    "description": "Minimum cpu platform the reservation.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationSpecificSkuPropertiesInstancePropertiesGuestAccelerator:FutureReservationSpecificSkuPropertiesInstancePropertiesGuestAccelerator": {
            "properties": {
                "acceleratorCount": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n"
                },
                "acceleratorType": {
                    "type": "string",
                    "description": "Full or partial URL of the accelerator type resource to attach to this instance.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationSpecificSkuPropertiesInstancePropertiesLocalSsd:FutureReservationSpecificSkuPropertiesInstancePropertiesLocalSsd": {
            "properties": {
                "diskSizeGb": {
                    "type": "string",
                    "description": "Specifies the size of the disk in base-2 GB.\n"
                },
                "interface": {
                    "type": "string",
                    "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.\nPossible values are: `SCSI`, `NVME`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatus:FutureReservationStatus": {
            "properties": {
                "amendmentStatus": {
                    "type": "string",
                    "description": "The current status of the requested amendment.\nPossible values are: .\n"
                },
                "autoCreatedReservations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully qualified urls of the automatically created reservations at startTime.\n"
                },
                "fulfilledCount": {
                    "type": "string",
                    "description": "This count indicates the fulfilled capacity so far. This is set during \"PROVISIONING\" state. This count also includes capacity delivered as part of existing matching reservations.\n"
                },
                "lastKnownGoodState": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodState:FutureReservationStatusLastKnownGoodState",
                    "description": "This field represents the future reservation before an amendment was requested. If the amendment is declined, the Future Reservation will be reverted to the last known good state. The last known good state is not set when updating a future reservation whose Procurement Status is DRAFTING.\nStructure is documented below.\n"
                },
                "lockTime": {
                    "type": "string",
                    "description": "The lock time of the FutureReservation before an amendment was requested.\n"
                },
                "procurementStatus": {
                    "type": "string",
                    "description": "The status of the last known good state for the Future Reservation\nPossible values are: .\n"
                },
                "specificSkuProperties": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusSpecificSkuProperties:FutureReservationStatusSpecificSkuProperties",
                    "description": "Future Reservation configuration to indicate instance properties and total count.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodState:FutureReservationStatusLastKnownGoodState": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\n"
                },
                "existingMatchingUsageInfo": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateExistingMatchingUsageInfo:FutureReservationStatusLastKnownGoodStateExistingMatchingUsageInfo",
                    "description": "Represents the matching usage for the future reservation before an amendment was requested.\nStructure is documented below.\n"
                },
                "futureReservationSpecs": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecs:FutureReservationStatusLastKnownGoodStateFutureReservationSpecs",
                    "description": "The previous instance-related properties of the Future Reservation.\nStructure is documented below.\n"
                },
                "lockTime": {
                    "type": "string",
                    "description": "The lock time of the FutureReservation before an amendment was requested.\n"
                },
                "namePrefix": {
                    "type": "string",
                    "description": "Name prefix for the reservations to be created at the time of delivery. The name prefix must comply with RFC1035. Maximum allowed length for name prefix is 20. Automatically created reservations name format will be -date-####.\n"
                },
                "procurementStatus": {
                    "type": "string",
                    "description": "The status of the last known good state for the Future Reservation\nPossible values are: .\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateExistingMatchingUsageInfo:FutureReservationStatusLastKnownGoodStateExistingMatchingUsageInfo": {
            "properties": {
                "count": {
                    "type": "string",
                    "description": "Count representing minimum(FR totalCount, matching_reserved_capacity+matching_unreserved_instances).\n"
                },
                "timeStamp": {
                    "type": "string",
                    "description": "Timestamp when the matching usage was calculated.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecs:FutureReservationStatusLastKnownGoodStateFutureReservationSpecs": {
            "properties": {
                "shareSettings": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsShareSettings:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsShareSettings",
                    "description": "Settings for sharing the future reservation\nStructure is documented below.\n"
                },
                "specificSkuProperties": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuProperties:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuProperties",
                    "description": "Future Reservation configuration to indicate instance properties and total count.\nStructure is documented below.\n"
                },
                "timeWindow": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsTimeWindow:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsTimeWindow",
                    "description": "Time window for this Future Reservation.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsShareSettings:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsShareSettings": {
            "properties": {
                "projectMaps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsShareSettingsProjectMap:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsShareSettingsProjectMap"
                    },
                    "description": "A map of project id and project config. This is only valid when shareType's value is SPECIFIC_PROJECTS.\nStructure is documented below.\n"
                },
                "projects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "list of Project names to specify consumer projects for this shared-reservation. This is only valid when shareType's value is SPECIFIC_PROJECTS.\n"
                },
                "shareType": {
                    "type": "string",
                    "description": "Type of sharing for this future reservation.\nPossible values are: `LOCAL`, `SPECIFIC_PROJECTS`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsShareSettingsProjectMap:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsShareSettingsProjectMap": {
            "properties": {
                "project": {
                    "type": "string",
                    "description": "The ID of the project in which the resource belongs.\nIf it is not provided, the provider project is used.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project ID, should be same as the key of this project config in the parent map.\n"
                }
            },
            "type": "object",
            "required": [
                "project"
            ]
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuProperties:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuProperties": {
            "properties": {
                "instanceProperties": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstanceProperties:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstanceProperties",
                    "description": "Properties of the SKU instances being reserved.\nStructure is documented below.\n"
                },
                "sourceInstanceTemplate": {
                    "type": "string",
                    "description": "The instance template that will be used to populate the ReservedInstanceProperties of the future reservation\n"
                },
                "totalCount": {
                    "type": "string",
                    "description": "Total number of instances for which capacity assurance is requested at a future time period.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstanceProperties:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstanceProperties": {
            "properties": {
                "guestAccelerators": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstancePropertiesGuestAccelerator:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstancePropertiesGuestAccelerator"
                    },
                    "description": "Specifies accelerator type and count.\nStructure is documented below.\n"
                },
                "localSsds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstancePropertiesLocalSsd:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstancePropertiesLocalSsd"
                    },
                    "description": "Specifies amount of local ssd to reserve with each instance. The type of disk is local-ssd.\nStructure is documented below.\n"
                },
                "locationHint": {
                    "type": "string",
                    "description": "An opaque location hint used to place the allocation close to other resources. This field is for use by internal tools that use the public API.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "Specifies type of machine (name only) which has fixed number of vCPUs and fixed amount of memory. This also includes specifying custom machine type following custom-NUMBER_OF_CPUS-AMOUNT_OF_MEMORY pattern.\n"
                },
                "maintenanceFreezeDurationHours": {
                    "type": "integer",
                    "description": "Specifies the number of hours after reservation creation where instances using the reservation won't be scheduled for maintenance.\n"
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC\nPossible values are: `PERIODIC`.\n"
                },
                "minCpuPlatform": {
                    "type": "string",
                    "description": "Minimum cpu platform the reservation.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstancePropertiesGuestAccelerator:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstancePropertiesGuestAccelerator": {
            "properties": {
                "acceleratorCount": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n"
                },
                "acceleratorType": {
                    "type": "string",
                    "description": "Full or partial URL of the accelerator type resource to attach to this instance.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstancePropertiesLocalSsd:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsSpecificSkuPropertiesInstancePropertiesLocalSsd": {
            "properties": {
                "diskSizeGb": {
                    "type": "string",
                    "description": "Specifies the size of the disk in base-2 GB.\n"
                },
                "interface": {
                    "type": "string",
                    "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI.\nPossible values are: `SCSI`, `NVME`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsTimeWindow:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsTimeWindow": {
            "properties": {
                "duration": {
                    "$ref": "#/types/gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsTimeWindowDuration:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsTimeWindowDuration",
                    "description": "Duration of the future reservation\nStructure is documented below.\n"
                },
                "endTime": {
                    "type": "string",
                    "description": "End time of the future reservation in RFC3339 format.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Start time of the future reservation in RFC3339 format.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusLastKnownGoodStateFutureReservationSpecsTimeWindowDuration:FutureReservationStatusLastKnownGoodStateFutureReservationSpecsTimeWindowDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationStatusSpecificSkuProperties:FutureReservationStatusSpecificSkuProperties": {
            "properties": {
                "sourceInstanceTemplateId": {
                    "type": "string",
                    "description": "ID of the instance template used to populate the Future Reservation properties.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/FutureReservationTimeWindow:FutureReservationTimeWindow": {
            "properties": {
                "duration": {
                    "$ref": "#/types/gcp:compute/FutureReservationTimeWindowDuration:FutureReservationTimeWindowDuration",
                    "description": "Duration of the future reservation\nStructure is documented below.\n"
                },
                "endTime": {
                    "type": "string",
                    "description": "End time of the future reservation in RFC3339 format.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Start time of the future reservation in RFC3339 format.\n"
                }
            },
            "type": "object",
            "required": [
                "startTime"
            ]
        },
        "gcp:compute/FutureReservationTimeWindowDuration:FutureReservationTimeWindowDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/GlobalForwardingRuleMetadataFilter:GlobalForwardingRuleMetadataFilter": {
            "properties": {
                "filterLabels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/GlobalForwardingRuleMetadataFilterFilterLabel:GlobalForwardingRuleMetadataFilterFilterLabel"
                    },
                    "description": "The list of label value pairs that must match labels in the\nprovided metadata based on filterMatchCriteria\nThis list must not be empty and can have at the most 64 entries.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "filterMatchCriteria": {
                    "type": "string",
                    "description": "Specifies how individual filterLabel matches within the list of\nfilterLabels contribute towards the overall metadataFilter match.\nMATCH_ANY - At least one of the filterLabels must have a matching\nlabel in the provided metadata.\nMATCH_ALL - All filterLabels must have matching labels in the\nprovided metadata.\nPossible values are: `MATCH_ANY`, `MATCH_ALL`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "filterLabels",
                "filterMatchCriteria"
            ]
        },
        "gcp:compute/GlobalForwardingRuleMetadataFilterFilterLabel:GlobalForwardingRuleMetadataFilterFilterLabel": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the metadata label. The length must be between\n1 and 1024 characters, inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "The value that the label must match. The value has a maximum\nlength of 1024 characters.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ]
        },
        "gcp:compute/GlobalForwardingRuleServiceDirectoryRegistrations:GlobalForwardingRuleServiceDirectoryRegistrations": {
            "properties": {
                "namespace": {
                    "type": "string",
                    "description": "Service Directory namespace to register the forwarding rule under.\n",
                    "willReplaceOnChanges": true
                },
                "serviceDirectoryRegion": {
                    "type": "string",
                    "description": "[Optional] Service Directory region to register this global forwarding rule under.\nDefault to \"us-central1\". Only used for PSC for Google APIs. All PSC for\nGoogle APIs Forwarding Rules on the same network should use the same Service\nDirectory region.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "namespace"
                    ]
                }
            }
        },
        "gcp:compute/HaVpnGatewayParams:HaVpnGatewayParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the HaVpnGateway. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/HaVpnGatewayVpnInterface:HaVpnGatewayVpnInterface": {
            "properties": {
                "id": {
                    "type": "integer",
                    "description": "The numeric ID of this VPN gateway interface.\n",
                    "willReplaceOnChanges": true
                },
                "interconnectAttachment": {
                    "type": "string",
                    "description": "URL of the interconnect attachment resource. When the value\nof this field is present, the VPN Gateway will be used for\nIPsec-encrypted Cloud Interconnect; all Egress or Ingress\ntraffic for this VPN Gateway interface will go through the\nspecified interconnect attachment resource.\nNot currently available publicly.\n",
                    "willReplaceOnChanges": true
                },
                "ipAddress": {
                    "type": "string",
                    "description": "(Output)\nThe external IP address for this VPN gateway interface.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipAddress"
                    ]
                }
            }
        },
        "gcp:compute/HealthCheckGrpcHealthCheck:HealthCheckGrpcHealthCheck": {
            "properties": {
                "grpcServiceName": {
                    "type": "string",
                    "description": "The gRPC service name for the health check.\nThe value of grpcServiceName has the following meanings by convention:\n- Empty serviceName means the overall status of all services at the backend.\n- Non-empty serviceName means the health of that gRPC service, as defined by the owner of the service.\nThe grpcServiceName can only be ASCII.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number for the health check request.\nMust be specified if portName and portSpecification are not set\nor if\u003cspan pulumi-lang-nodejs=\" portSpecification \" pulumi-lang-dotnet=\" PortSpecification \" pulumi-lang-go=\" portSpecification \" pulumi-lang-python=\" port_specification \" pulumi-lang-yaml=\" portSpecification \" pulumi-lang-java=\" portSpecification \" pulumi-lang-hcl=\" port_specification \"\u003e portSpecification \u003c/span\u003eis USE_FIXED_PORT. Valid values are 1 through 65535.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, gRPC health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/HealthCheckGrpcTlsHealthCheck:HealthCheckGrpcTlsHealthCheck": {
            "properties": {
                "grpcServiceName": {
                    "type": "string",
                    "description": "The gRPC service name for the health check.\nThe value of grpcServiceName has the following meanings by convention:\n- Empty serviceName means the overall status of all services at the backend.\n- Non-empty serviceName means the health of that gRPC service, as defined by the owner of the service.\nThe grpcServiceName can only be ASCII.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number for the health check request.\nMust be specified if\u003cspan pulumi-lang-nodejs=\" portSpecification \" pulumi-lang-dotnet=\" PortSpecification \" pulumi-lang-go=\" portSpecification \" pulumi-lang-python=\" port_specification \" pulumi-lang-yaml=\" portSpecification \" pulumi-lang-java=\" portSpecification \" pulumi-lang-hcl=\" port_specification \"\u003e portSpecification \u003c/span\u003eis USE_FIXED_PORT. Valid values are 1 through 65535.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: Not supported for GRPC with TLS health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, gRPC with TLS health check follows behavior specified in the \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e field.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/HealthCheckHttp2HealthCheck:HealthCheckHttp2HealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTP2 health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTP2 health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, HTTP2 health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTP2 health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/HealthCheckHttpHealthCheck:HealthCheckHttpHealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTP health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTP health check request.\nThe default value is 80.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, HTTP health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend.\nDefault value is `NONE`.\nPossible values are: `NONE`, `PROXY_V1`.\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTP health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/HealthCheckHttpsHealthCheck:HealthCheckHttpsHealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTPS health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTPS health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, HTTPS health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend.\nDefault value is `NONE`.\nPossible values are: `NONE`, `PROXY_V1`.\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTPS health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/HealthCheckLogConfig:HealthCheckLogConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "Indicates whether or not to export logs. This is false by default,\nwhich means no health check logging will be done.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/HealthCheckSslHealthCheck:HealthCheckSslHealthCheck": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTP2 health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, HTTP2 health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend.\nDefault value is `NONE`.\nPossible values are: `NONE`, `PROXY_V1`.\n"
                },
                "request": {
                    "type": "string",
                    "description": "The application data to send once the SSL connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/HealthCheckTcpHealthCheck:HealthCheckTcpHealthCheck": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the TCP health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, TCP health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend.\nDefault value is `NONE`.\nPossible values are: `NONE`, `PROXY_V1`.\n"
                },
                "request": {
                    "type": "string",
                    "description": "The application data to send once the TCP connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/ImageGuestOsFeature:ImageGuestOsFeature": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "The type of supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options.\nPossible values are: `MULTI_IP_SUBNET`, `SECURE_BOOT`, `SEV_CAPABLE`, `UEFI_COMPATIBLE`, `VIRTIO_SCSI_MULTIQUEUE`, `WINDOWS`, `GVNIC`, `IDPF`, `SEV_LIVE_MIGRATABLE`, `SEV_SNP_CAPABLE`, `SUSPEND_RESUME_COMPATIBLE`, `TDX_CAPABLE`, `SEV_LIVE_MIGRATABLE_V2`, `SNP_SVSM_CAPABLE`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/ImageIamBindingCondition:ImageIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** This provider considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/ImageIamMemberCondition:ImageIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** This provider considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/ImageImageEncryptionKey:ImageImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud\nKMS.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the\ngiven KMS key. If absent, the Compute Engine default service\naccount is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/ImageParams:ImageParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the image. Tag keys and values have the\nsame definition as resource manager tags. Keys and values can be either in numeric format,\nsuch as tagKeys/{tag_key_id} and tagValues/{tag_value_id} or in namespaced format such as\n{org_id|projectId}/{tag_key_short_name} and {tag_value_short_name}. The field is ignored when empty.\nThe field is immutable and causes resource replacement when mutated. This field is only\nset at create time and modifying this field after creation will trigger recreation.\nTo apply tags to an existing resource, see the\u003cspan pulumi-lang-nodejs=\" gcp.tags.TagBinding \" pulumi-lang-dotnet=\" gcp.tags.TagBinding \" pulumi-lang-go=\" tags.TagBinding \" pulumi-lang-python=\" tags.TagBinding \" pulumi-lang-yaml=\" gcp.tags.TagBinding \" pulumi-lang-java=\" gcp.tags.TagBinding \" pulumi-lang-hcl=\" google_tags_tag_binding \"\u003e gcp.tags.TagBinding \u003c/span\u003eresource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/ImageRawDisk:ImageRawDisk": {
            "properties": {
                "containerType": {
                    "type": "string",
                    "description": "The format used to encode and transmit the block device, which\nshould be TAR. This is just a container and transmission format\nand not a runtime format. Provided by the client when the disk\nimage is created.\nDefault value is `TAR`.\nPossible values are: `TAR`.\n",
                    "willReplaceOnChanges": true
                },
                "sha1": {
                    "type": "string",
                    "description": "An optional SHA1 checksum of the disk image before unpackaging.\nThis is provided by the client when the disk image is created.\n",
                    "willReplaceOnChanges": true
                },
                "source": {
                    "type": "string",
                    "description": "The full Google Cloud Storage URL where disk storage is stored\nYou must provide either this property or the sourceDisk property\nbut not both.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "source"
            ]
        },
        "gcp:compute/ImageShieldedInstanceInitialState:ImageShieldedInstanceInitialState": {
            "properties": {
                "dbs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ImageShieldedInstanceInitialStateDb:ImageShieldedInstanceInitialStateDb"
                    },
                    "description": "The Key Database (db).\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "dbxs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ImageShieldedInstanceInitialStateDbx:ImageShieldedInstanceInitialStateDbx"
                    },
                    "description": "The forbidden key database (dbx).\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "keks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ImageShieldedInstanceInitialStateKek:ImageShieldedInstanceInitialStateKek"
                    },
                    "description": "The Key Exchange Key (KEK).\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "pk": {
                    "$ref": "#/types/gcp:compute/ImageShieldedInstanceInitialStatePk:ImageShieldedInstanceInitialStatePk",
                    "description": "The Platform Key (PK).\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/ImageShieldedInstanceInitialStateDb:ImageShieldedInstanceInitialStateDb": {
            "properties": {
                "content": {
                    "type": "string",
                    "description": "The raw content in the secure keys file.\nA base64-encoded string.\n",
                    "willReplaceOnChanges": true
                },
                "fileType": {
                    "type": "string",
                    "description": "The file type of source file.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "content"
            ]
        },
        "gcp:compute/ImageShieldedInstanceInitialStateDbx:ImageShieldedInstanceInitialStateDbx": {
            "properties": {
                "content": {
                    "type": "string",
                    "description": "The raw content in the secure keys file.\nA base64-encoded string.\n",
                    "willReplaceOnChanges": true
                },
                "fileType": {
                    "type": "string",
                    "description": "The file type of source file.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "content"
            ]
        },
        "gcp:compute/ImageShieldedInstanceInitialStateKek:ImageShieldedInstanceInitialStateKek": {
            "properties": {
                "content": {
                    "type": "string",
                    "description": "The raw content in the secure keys file.\nA base64-encoded string.\n",
                    "willReplaceOnChanges": true
                },
                "fileType": {
                    "type": "string",
                    "description": "The file type of source file.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "content"
            ]
        },
        "gcp:compute/ImageShieldedInstanceInitialStatePk:ImageShieldedInstanceInitialStatePk": {
            "properties": {
                "content": {
                    "type": "string",
                    "description": "The raw content in the secure keys file.\nA base64-encoded string.\n",
                    "willReplaceOnChanges": true
                },
                "fileType": {
                    "type": "string",
                    "description": "The file type of source file.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "content"
            ]
        },
        "gcp:compute/ImageSourceDiskEncryptionKey:ImageSourceDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to decrypt this resource. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n(`service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com`) must have\n`roles/cloudkms.cryptoKeyEncrypterDecrypter` to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the\ngiven KMS key. If absent, the Compute Engine default service\naccount is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/ImageSourceImageEncryptionKey:ImageSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to decrypt this resource. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n(`service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com`) must have\n`roles/cloudkms.cryptoKeyEncrypterDecrypter` to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the\ngiven KMS key. If absent, the Compute Engine default service\naccount is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/ImageSourceSnapshotEncryptionKey:ImageSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to decrypt this resource. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n(`service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com`) must have\n`roles/cloudkms.cryptoKeyEncrypterDecrypter` to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the\ngiven KMS key. If absent, the Compute Engine default service\naccount is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceAdvancedMachineFeatures:InstanceAdvancedMachineFeatures": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have nested virtualization  enabled. Defaults to false.\n"
                },
                "enableUefiNetworking": {
                    "type": "boolean",
                    "description": "Whether to enable UEFI networking for instance creation.\n",
                    "willReplaceOnChanges": true
                },
                "performanceMonitoringUnit": {
                    "type": "string",
                    "description": "[The PMU](https://cloud.google.com/compute/docs/pmu-overview) is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are `STANDARD`, `ENHANCED`, and `ARCHITECTURAL`.\n"
                },
                "threadsPerCore": {
                    "type": "integer",
                    "description": "The number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.\n"
                },
                "turboMode": {
                    "type": "string",
                    "description": "Turbo frequency mode to use for the instance. Supported modes are currently either `ALL_CORE_MAX` or unset (default).\n"
                },
                "visibleCoreCount": {
                    "type": "integer",
                    "description": "The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceAttachedDisk:InstanceAttachedDisk": {
            "properties": {
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk will be accessible\nunder `/dev/disk/by-id/google-*`\n"
                },
                "diskEncryptionKeyRaw": {
                    "type": "string",
                    "description": "A 256-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption),\nencoded in [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nto encrypt this disk. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRsa`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRsa`\" pulumi-lang-go=\"`diskEncryptionKeyRsa`\" pulumi-lang-python=\"`disk_encryption_key_rsa`\" pulumi-lang-yaml=\"`diskEncryptionKeyRsa`\" pulumi-lang-java=\"`diskEncryptionKeyRsa`\" pulumi-lang-hcl=\"`disk_encryption_key_rsa`\"\u003e`diskEncryptionKeyRsa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRaw`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRaw`\" pulumi-lang-go=\"`diskEncryptionKeyRaw`\" pulumi-lang-python=\"`disk_encryption_key_raw`\" pulumi-lang-yaml=\"`diskEncryptionKeyRaw`\" pulumi-lang-java=\"`diskEncryptionKeyRaw`\" pulumi-lang-hcl=\"`disk_encryption_key_raw`\"\u003e`diskEncryptionKeyRaw`\u003c/span\u003e\nmay be set.\n",
                    "secret": true
                },
                "diskEncryptionKeyRsa": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) to encrypt this disk. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRsa`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRsa`\" pulumi-lang-go=\"`diskEncryptionKeyRsa`\" pulumi-lang-python=\"`disk_encryption_key_rsa`\" pulumi-lang-yaml=\"`diskEncryptionKeyRsa`\" pulumi-lang-java=\"`diskEncryptionKeyRsa`\" pulumi-lang-hcl=\"`disk_encryption_key_rsa`\"\u003e`diskEncryptionKeyRsa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRaw`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRaw`\" pulumi-lang-go=\"`diskEncryptionKeyRaw`\" pulumi-lang-python=\"`disk_encryption_key_raw`\" pulumi-lang-yaml=\"`diskEncryptionKeyRaw`\" pulumi-lang-java=\"`diskEncryptionKeyRaw`\" pulumi-lang-hcl=\"`disk_encryption_key_raw`\"\u003e`diskEncryptionKeyRaw`\u003c/span\u003e\nmay be set.\n",
                    "secret": true
                },
                "diskEncryptionKeySha256": {
                    "type": "string",
                    "description": "The [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nencoded SHA-256 hash of the [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) that protects this resource.\n"
                },
                "diskEncryptionServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "forceAttach": {
                    "type": "boolean",
                    "description": "Whether to force attach the regional disk even if it's currently attached to another instance. If you try to force attach a zonal disk to an instance, you will receive an error. Setting this parameter cause VM recreation.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is\nstored in Google Cloud KMS to encrypt this disk. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRsa`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRsa`\" pulumi-lang-go=\"`diskEncryptionKeyRsa`\" pulumi-lang-python=\"`disk_encryption_key_rsa`\" pulumi-lang-yaml=\"`diskEncryptionKeyRsa`\" pulumi-lang-java=\"`diskEncryptionKeyRsa`\" pulumi-lang-hcl=\"`disk_encryption_key_rsa`\"\u003e`diskEncryptionKeyRsa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRaw`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRaw`\" pulumi-lang-go=\"`diskEncryptionKeyRaw`\" pulumi-lang-python=\"`disk_encryption_key_raw`\" pulumi-lang-yaml=\"`diskEncryptionKeyRaw`\" pulumi-lang-java=\"`diskEncryptionKeyRaw`\" pulumi-lang-hcl=\"`disk_encryption_key_raw`\"\u003e`diskEncryptionKeyRaw`\u003c/span\u003e\nmay be set.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Either \"READ_ONLY\" or \"READ_WRITE\", defaults to \"READ_WRITE\"\nIf you have a persistent disk with data that you want to share\nbetween multiple instances, detach it from any read-write instances and\nattach it to one or more instances in read-only mode.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the disk to attach to this instance.\n"
                }
            },
            "type": "object",
            "required": [
                "source"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceName",
                        "diskEncryptionKeySha256",
                        "kmsKeySelfLink",
                        "source"
                    ]
                }
            }
        },
        "gcp:compute/InstanceBootDisk:InstanceBootDisk": {
            "properties": {
                "autoDelete": {
                    "type": "boolean",
                    "description": "Whether the disk will be auto-deleted when the instance\nis deleted. Defaults to true.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "Name with which attached disk will be accessible.\nOn the instance, this device will be `/dev/disk/by-id/google-{{device_name}}`.\n",
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeyRaw": {
                    "type": "string",
                    "description": "A 256-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption),\nencoded in [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nto encrypt this disk. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRsa`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRsa`\" pulumi-lang-go=\"`diskEncryptionKeyRsa`\" pulumi-lang-python=\"`disk_encryption_key_rsa`\" pulumi-lang-yaml=\"`diskEncryptionKeyRsa`\" pulumi-lang-java=\"`diskEncryptionKeyRsa`\" pulumi-lang-hcl=\"`disk_encryption_key_rsa`\"\u003e`diskEncryptionKeyRsa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRaw`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRaw`\" pulumi-lang-go=\"`diskEncryptionKeyRaw`\" pulumi-lang-python=\"`disk_encryption_key_raw`\" pulumi-lang-yaml=\"`diskEncryptionKeyRaw`\" pulumi-lang-java=\"`diskEncryptionKeyRaw`\" pulumi-lang-hcl=\"`disk_encryption_key_raw`\"\u003e`diskEncryptionKeyRaw`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeyRsa": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) to encrypt this disk. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRsa`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRsa`\" pulumi-lang-go=\"`diskEncryptionKeyRsa`\" pulumi-lang-python=\"`disk_encryption_key_rsa`\" pulumi-lang-yaml=\"`diskEncryptionKeyRsa`\" pulumi-lang-java=\"`diskEncryptionKeyRsa`\" pulumi-lang-hcl=\"`disk_encryption_key_rsa`\"\u003e`diskEncryptionKeyRsa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRaw`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRaw`\" pulumi-lang-go=\"`diskEncryptionKeyRaw`\" pulumi-lang-python=\"`disk_encryption_key_raw`\" pulumi-lang-yaml=\"`diskEncryptionKeyRaw`\" pulumi-lang-java=\"`diskEncryptionKeyRaw`\" pulumi-lang-hcl=\"`disk_encryption_key_raw`\"\u003e`diskEncryptionKeyRaw`\u003c/span\u003e\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeySha256": {
                    "type": "string",
                    "description": "The [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nencoded SHA-256 hash of the [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) that protects this resource.\n"
                },
                "diskEncryptionServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "forceAttach": {
                    "type": "boolean",
                    "description": "boolean field that determines whether to force attach the regional\ndisk even if it's currently attached to another instance. If you try to force attach a zonal\ndisk to an instance, you will receive an error. Setting this parameter cause VM recreation.\n",
                    "willReplaceOnChanges": true
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options.\n",
                    "willReplaceOnChanges": true
                },
                "initializeParams": {
                    "$ref": "#/types/gcp:compute/InstanceBootDiskInitializeParams:InstanceBootDiskInitializeParams",
                    "description": "Parameters for a new disk that will be created\nalongside the new instance. Either \u003cspan pulumi-lang-nodejs=\"`initializeParams`\" pulumi-lang-dotnet=\"`InitializeParams`\" pulumi-lang-go=\"`initializeParams`\" pulumi-lang-python=\"`initialize_params`\" pulumi-lang-yaml=\"`initializeParams`\" pulumi-lang-java=\"`initializeParams`\" pulumi-lang-hcl=\"`initialize_params`\"\u003e`initializeParams`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e must be set.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface used for attaching this disk. One of SCSI or NVME. (This field is shared with\u003cspan pulumi-lang-nodejs=\" attachedDisk \" pulumi-lang-dotnet=\" AttachedDisk \" pulumi-lang-go=\" attachedDisk \" pulumi-lang-python=\" attached_disk \" pulumi-lang-yaml=\" attachedDisk \" pulumi-lang-java=\" attachedDisk \" pulumi-lang-hcl=\" attached_disk \"\u003e attachedDisk \u003c/span\u003eand only used for specific cases, please don't specify this field without advice from Google.)\n"
                },
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is\nstored in Google Cloud KMS to encrypt this disk. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRsa`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRsa`\" pulumi-lang-go=\"`diskEncryptionKeyRsa`\" pulumi-lang-python=\"`disk_encryption_key_rsa`\" pulumi-lang-yaml=\"`diskEncryptionKeyRsa`\" pulumi-lang-java=\"`diskEncryptionKeyRsa`\" pulumi-lang-hcl=\"`disk_encryption_key_rsa`\"\u003e`diskEncryptionKeyRsa`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`diskEncryptionKeyRaw`\" pulumi-lang-dotnet=\"`DiskEncryptionKeyRaw`\" pulumi-lang-go=\"`diskEncryptionKeyRaw`\" pulumi-lang-python=\"`disk_encryption_key_raw`\" pulumi-lang-yaml=\"`diskEncryptionKeyRaw`\" pulumi-lang-java=\"`diskEncryptionKeyRaw`\" pulumi-lang-hcl=\"`disk_encryption_key_raw`\"\u003e`diskEncryptionKeyRaw`\u003c/span\u003e\nmay be set.\n",
                    "willReplaceOnChanges": true
                },
                "mode": {
                    "type": "string",
                    "description": "The mode in which to attach this disk, either `READ_WRITE`\nor `READ_ONLY`. If not specified, the default is to attach the disk in `READ_WRITE` mode.\n",
                    "willReplaceOnChanges": true
                },
                "source": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the existing disk (such as those managed by\n\u003cspan pulumi-lang-nodejs=\"`gcp.compute.Disk`\" pulumi-lang-dotnet=\"`gcp.compute.Disk`\" pulumi-lang-go=\"`compute.Disk`\" pulumi-lang-python=\"`compute.Disk`\" pulumi-lang-yaml=\"`gcp.compute.Disk`\" pulumi-lang-java=\"`gcp.compute.Disk`\" pulumi-lang-hcl=\"`google_compute_disk`\"\u003e`gcp.compute.Disk`\u003c/span\u003e) or disk image. To create an instance from a snapshot, first create a\n\u003cspan pulumi-lang-nodejs=\"`gcp.compute.Disk`\" pulumi-lang-dotnet=\"`gcp.compute.Disk`\" pulumi-lang-go=\"`compute.Disk`\" pulumi-lang-python=\"`compute.Disk`\" pulumi-lang-yaml=\"`gcp.compute.Disk`\" pulumi-lang-java=\"`gcp.compute.Disk`\" pulumi-lang-hcl=\"`google_compute_disk`\"\u003e`gcp.compute.Disk`\u003c/span\u003e from a snapshot and reference it here.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceName",
                        "diskEncryptionKeySha256",
                        "guestOsFeatures",
                        "initializeParams",
                        "kmsKeySelfLink",
                        "source"
                    ]
                }
            }
        },
        "gcp:compute/InstanceBootDiskInitializeParams:InstanceBootDiskInitializeParams": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": "The architecture of the attached disk. Valid values are `ARM64` or \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\" pulumi-lang-hcl=\"`x86_64`\"\u003e`x8664`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Whether this disk is using confidential compute mode.\nNote: Only supported on hyperdisk skus,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKey \" pulumi-lang-dotnet=\" DiskEncryptionKey \" pulumi-lang-go=\" diskEncryptionKey \" pulumi-lang-python=\" disk_encryption_key \" pulumi-lang-yaml=\" diskEncryptionKey \" pulumi-lang-java=\" diskEncryptionKey \" pulumi-lang-hcl=\" disk_encryption_key \"\u003e diskEncryptionKey \u003c/span\u003eis required when setting to true.\n",
                    "willReplaceOnChanges": true
                },
                "image": {
                    "type": "string",
                    "description": "The image from which to initialize this disk. This can be\none of: the image's \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e, `projects/{project}/global/images/{image}`,\n`projects/{project}/global/images/family/{family}`, `global/images/{image}`,\n`global/images/family/{family}`, `family/{family}`, `{project}/{family}`,\n`{project}/{image}`, `{family}`, or `{image}`. If referred by family, the\nimages names must include the family name. If they don't, use the\n\u003cspan pulumi-lang-nodejs=\"[gcp.compute.Image \" pulumi-lang-dotnet=\"[gcp.compute.Image \" pulumi-lang-go=\"[compute.Image \" pulumi-lang-python=\"[compute.Image \" pulumi-lang-yaml=\"[gcp.compute.Image \" pulumi-lang-java=\"[gcp.compute.Image \" pulumi-lang-hcl=\"[google_compute_image \"\u003e[gcp.compute.Image \u003c/span\u003edata source](https://www.terraform.io/docs/providers/google/d/compute_image.html).\nFor instance, the image `centos-6-v20180104` includes its family name `centos-6`.\nThese images can be referred by family name here.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of key/value label pairs assigned to the disk. This\nfield is only applicable for persistent disks.\n"
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Indicates how many IOPS to provision for the disk.\nThis sets the number of I/O operations per second that the disk can handle.\nFor more details,see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).\nNote: Updating currently is only supported for hyperdisk skus via disk update\napi/gcloud without the need to delete and recreate the disk, hyperdisk allows\nfor an update of IOPS every 4 hours. To update your hyperdisk more frequently,\nyou'll need to manually delete and recreate it.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Indicates how much throughput to provision for the disk.\nThis sets the number of throughput mb per second that the disk can handle.\nFor more details,see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).\nNote: Updating currently is only supported for hyperdisk skus via disk update\napi/gcloud without the need to delete and recreate the disk, hyperdisk allows\nfor an update of throughput every 4 hours. To update your hyperdisk more\nfrequently, you'll need to manually delete and recreate it.\n",
                    "willReplaceOnChanges": true
                },
                "replicaZones": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of short names or\u003cspan pulumi-lang-nodejs=\" selfLinks \" pulumi-lang-dotnet=\" SelfLinks \" pulumi-lang-go=\" selfLinks \" pulumi-lang-python=\" self_links \" pulumi-lang-yaml=\" selfLinks \" pulumi-lang-java=\" selfLinks \" pulumi-lang-hcl=\" self_links \"\u003e selfLinks \u003c/span\u003eof zones in which to create the disk. Setting this field converts the disk to a regional disk. You must provide exactly two replica zones, and one zone must be the same as the instance zone.\n",
                    "willReplaceOnChanges": true
                },
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A tag is a key-value pair that can be attached to a Google Cloud resource. You can use tags to conditionally allow or deny policies based on whether a resource has a specific tag. This value is not returned by the API. In Terraform, this value cannot be updated and changing it will recreate the resource.\n",
                    "willReplaceOnChanges": true
                },
                "resourcePolicies": {
                    "type": "string",
                    "description": "A list of\u003cspan pulumi-lang-nodejs=\" selfLinks \" pulumi-lang-dotnet=\" SelfLinks \" pulumi-lang-go=\" selfLinks \" pulumi-lang-python=\" self_links \" pulumi-lang-yaml=\" selfLinks \" pulumi-lang-java=\" selfLinks \" pulumi-lang-hcl=\" self_links \"\u003e selfLinks \u003c/span\u003eof resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate, so any external values are not set until the user specifies this field. Currently a max of 1 resource policy is supported.\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes. If not specified, it\nwill inherit the size of its base image.\n"
                },
                "snapshot": {
                    "type": "string",
                    "description": "The snapshot from which to initialize this disk. To create a disk with a snapshot that you created, specify the snapshot name in the following format: `global/snapshots/my-backup`\n",
                    "willReplaceOnChanges": true
                },
                "sourceImageEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceBootDiskInitializeParamsSourceImageEncryptionKey:InstanceBootDiskInitializeParamsSourceImageEncryptionKey",
                    "description": "Encryption key used to decrypt the given image. Structure is documented below.\n"
                },
                "sourceSnapshotEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceBootDiskInitializeParamsSourceSnapshotEncryptionKey:InstanceBootDiskInitializeParamsSourceSnapshotEncryptionKey",
                    "description": "Encryption key used to decrypt the given snapshot. Structure is documented below.\n"
                },
                "storagePool": {
                    "type": "string",
                    "description": "The URL or the name of the storage pool in which the new disk is created.\nFor example:\n* https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/storagePools/{storagePool}\n* /projects/{project}/zones/{zone}/storagePools/{storagePool}\n* /zones/{zone}/storagePools/{storagePool}\n* /{storagePool}\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The GCE disk type. Such as pd-standard, pd-balanced or pd-ssd.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "architecture",
                        "image",
                        "labels",
                        "provisionedIops",
                        "provisionedThroughput",
                        "resourcePolicies",
                        "size",
                        "snapshot",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/InstanceBootDiskInitializeParamsSourceImageEncryptionKey:InstanceBootDiskInitializeParamsSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nencoded SHA-256 hash of the [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceBootDiskInitializeParamsSourceSnapshotEncryptionKey:InstanceBootDiskInitializeParamsSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is\nstored in Google Cloud KMS to decrypt the given image. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "A 256-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption),\nencoded in [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nto decrypt the given snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) to decrypt the given snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nencoded SHA-256 hash of the [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceConfidentialInstanceConfig:InstanceConfidentialInstanceConfig": {
            "properties": {
                "confidentialInstanceType": {
                    "type": "string",
                    "description": "Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: `SEV`, `SEV_SNP`, `TDX`. \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e can be set to MIGRATE if \u003cspan pulumi-lang-nodejs=\"`confidentialInstanceType`\" pulumi-lang-dotnet=\"`ConfidentialInstanceType`\" pulumi-lang-go=\"`confidentialInstanceType`\" pulumi-lang-python=\"`confidential_instance_type`\" pulumi-lang-yaml=\"`confidentialInstanceType`\" pulumi-lang-java=\"`confidentialInstanceType`\" pulumi-lang-hcl=\"`confidential_instance_type`\"\u003e`confidentialInstanceType`\u003c/span\u003e is set to `SEV` and \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e is set to `\"AMD Milan\"` or `\"AMD Genoa\"`. Otherwise, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e has to be set to `\"AMD Milan\"` or this will fail to create the VM.\n"
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e can be set to MIGRATE if \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e is set to `\"AMD Milan\"` or `\"AMD Genoa\"`. Otherwise, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e has to be set to TERMINATE or this will fail to create the VM.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceFromMachineImageAdvancedMachineFeatures:InstanceFromMachineImageAdvancedMachineFeatures": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Whether to enable nested virtualization or not.\n"
                },
                "enableUefiNetworking": {
                    "type": "boolean",
                    "description": "Whether to enable UEFI networking for the instance.\n",
                    "willReplaceOnChanges": true
                },
                "performanceMonitoringUnit": {
                    "type": "string",
                    "description": "The PMU is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are \"STANDARD\", \"ENHANCED\", and \"ARCHITECTURAL\".\n"
                },
                "threadsPerCore": {
                    "type": "integer",
                    "description": "The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.\n"
                },
                "turboMode": {
                    "type": "string",
                    "description": "Turbo frequency mode to use for the instance. Currently supported modes is \"ALL_CORE_MAX\".\n"
                },
                "visibleCoreCount": {
                    "type": "integer",
                    "description": "The number of physical cores to expose to an instance. Multiply by the number of threads per core to compute the total number of virtual CPUs to expose to the instance. If unset, the number of cores is inferred from the instance\\'s nominal CPU count and the underlying platform\\'s SMT width.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableNestedVirtualization",
                        "enableUefiNetworking",
                        "performanceMonitoringUnit",
                        "threadsPerCore",
                        "turboMode",
                        "visibleCoreCount"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageAttachedDisk:InstanceFromMachineImageAttachedDisk": {
            "properties": {
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk is accessible under /dev/disk/by-id/\n"
                },
                "diskEncryptionKeyRaw": {
                    "type": "string",
                    "description": "A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n",
                    "secret": true
                },
                "diskEncryptionKeyRsa": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n",
                    "secret": true
                },
                "diskEncryptionKeySha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.\n"
                },
                "diskEncryptionServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used\n"
                },
                "forceAttach": {
                    "type": "boolean",
                    "description": "Whether to force attach the regional disk even if it's currently attached to another instance. If you try to force attach a zonal disk to an instance, you will receive an error. Setting this parameter cause VM recreation.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Read/write mode for the disk. One of \"READ_ONLY\" or \"READ_WRITE\".\n"
                },
                "source": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the disk attached to this instance.\n"
                }
            },
            "type": "object",
            "required": [
                "source"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceName",
                        "diskEncryptionKeyRaw",
                        "diskEncryptionKeyRsa",
                        "diskEncryptionKeySha256",
                        "diskEncryptionServiceAccount",
                        "forceAttach",
                        "kmsKeySelfLink",
                        "mode",
                        "source"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageBootDisk:InstanceFromMachineImageBootDisk": {
            "properties": {
                "autoDelete": {
                    "type": "boolean",
                    "description": "Whether the disk will be auto-deleted when the instance is deleted.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "Name with which attached disk will be accessible under /dev/disk/by-id/\n",
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeyRaw": {
                    "type": "string",
                    "description": "A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeyRsa": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeySha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.\n"
                },
                "diskEncryptionServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used\n",
                    "willReplaceOnChanges": true
                },
                "forceAttach": {
                    "type": "boolean",
                    "description": "Whether to force attach the regional disk even if it's currently attached to another instance. If you try to force attach a zonal disk to an instance, you will receive an error. Setting this parameter cause VM recreation.\n",
                    "willReplaceOnChanges": true
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features to enable on the guest operating system. Applicable only for bootable images.\n",
                    "willReplaceOnChanges": true
                },
                "initializeParams": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageBootDiskInitializeParams:InstanceFromMachineImageBootDiskInitializeParams",
                    "description": "Parameters with which a disk was created alongside the instance.\n",
                    "willReplaceOnChanges": true
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface used for attaching this disk. One of SCSI or NVME. (This field is shared with\u003cspan pulumi-lang-nodejs=\" attachedDisk \" pulumi-lang-dotnet=\" AttachedDisk \" pulumi-lang-go=\" attachedDisk \" pulumi-lang-python=\" attached_disk \" pulumi-lang-yaml=\" attachedDisk \" pulumi-lang-java=\" attachedDisk \" pulumi-lang-hcl=\" attached_disk \"\u003e attachedDisk \u003c/span\u003eand only used for specific cases, please don't specify this field without advice from Google.)\n"
                },
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n",
                    "willReplaceOnChanges": true
                },
                "mode": {
                    "type": "string",
                    "description": "Read/write mode for the disk. One of \"READ_ONLY\" or \"READ_WRITE\".\n",
                    "willReplaceOnChanges": true
                },
                "source": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the disk attached to this instance.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "autoDelete",
                        "deviceName",
                        "diskEncryptionKeyRaw",
                        "diskEncryptionKeyRsa",
                        "diskEncryptionKeySha256",
                        "diskEncryptionServiceAccount",
                        "forceAttach",
                        "guestOsFeatures",
                        "initializeParams",
                        "interface",
                        "kmsKeySelfLink",
                        "mode",
                        "source"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageBootDiskInitializeParams:InstanceFromMachineImageBootDiskInitializeParams": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": "The architecture of the disk. One of \"X86_64\" or \"ARM64\".\n",
                    "willReplaceOnChanges": true
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "A flag to enable confidential compute mode on boot disk\n",
                    "willReplaceOnChanges": true
                },
                "image": {
                    "type": "string",
                    "description": "The image from which this disk was initialised.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of key/value label pairs assigned to the disk.\n"
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle.\n",
                    "willReplaceOnChanges": true
                },
                "replicaZones": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of short names or\u003cspan pulumi-lang-nodejs=\" selfLinks \" pulumi-lang-dotnet=\" SelfLinks \" pulumi-lang-go=\" selfLinks \" pulumi-lang-python=\" self_links \" pulumi-lang-yaml=\" selfLinks \" pulumi-lang-java=\" selfLinks \" pulumi-lang-hcl=\" self_links \"\u003e selfLinks \u003c/span\u003eof zones in which to create a regional disk.\n",
                    "willReplaceOnChanges": true
                },
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty.\n",
                    "willReplaceOnChanges": true
                },
                "resourcePolicies": {
                    "type": "string",
                    "description": "A list of\u003cspan pulumi-lang-nodejs=\" selfLinks \" pulumi-lang-dotnet=\" SelfLinks \" pulumi-lang-go=\" selfLinks \" pulumi-lang-python=\" self_links \" pulumi-lang-yaml=\" selfLinks \" pulumi-lang-java=\" selfLinks \" pulumi-lang-hcl=\" self_links \"\u003e selfLinks \u003c/span\u003eof resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes.\n"
                },
                "snapshot": {
                    "type": "string",
                    "description": "The snapshot from which this disk was initialised.\n",
                    "willReplaceOnChanges": true
                },
                "sourceImageEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageBootDiskInitializeParamsSourceImageEncryptionKey:InstanceFromMachineImageBootDiskInitializeParamsSourceImageEncryptionKey",
                    "description": "The encryption key used to decrypt the source image.\n"
                },
                "sourceSnapshotEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageBootDiskInitializeParamsSourceSnapshotEncryptionKey:InstanceFromMachineImageBootDiskInitializeParamsSourceSnapshotEncryptionKey",
                    "description": "The encryption key used to decrypt the source snapshot.\n"
                },
                "storagePool": {
                    "type": "string",
                    "description": "The URL of the storage pool in which the new disk is created\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The Google Compute Engine disk type. Such as pd-standard, pd-ssd or pd-balanced.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "architecture",
                        "enableConfidentialCompute",
                        "image",
                        "labels",
                        "provisionedIops",
                        "provisionedThroughput",
                        "replicaZones",
                        "resourceManagerTags",
                        "resourcePolicies",
                        "size",
                        "snapshot",
                        "sourceImageEncryptionKey",
                        "sourceSnapshotEncryptionKey",
                        "storagePool",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageBootDiskInitializeParamsSourceImageEncryptionKey:InstanceFromMachineImageBootDiskInitializeParamsSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the encryption key used to encrypt this disk.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "kmsKeyServiceAccount",
                        "rawKey",
                        "rsaEncryptedKey",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageBootDiskInitializeParamsSourceSnapshotEncryptionKey:InstanceFromMachineImageBootDiskInitializeParamsSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the encryption key used to encrypt this disk.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "kmsKeyServiceAccount",
                        "rawKey",
                        "rsaEncryptedKey",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageConfidentialInstanceConfig:InstanceFromMachineImageConfidentialInstanceConfig": {
            "properties": {
                "confidentialInstanceType": {
                    "type": "string",
                    "description": "The confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP,\u003cspan pulumi-lang-nodejs=\" minCpuPlatform \" pulumi-lang-dotnet=\" MinCpuPlatform \" pulumi-lang-go=\" minCpuPlatform \" pulumi-lang-python=\" min_cpu_platform \" pulumi-lang-yaml=\" minCpuPlatform \" pulumi-lang-java=\" minCpuPlatform \" pulumi-lang-hcl=\" min_cpu_platform \"\u003e minCpuPlatform \u003c/span\u003e=\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required.\n"
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have confidential compute enabled. Field will be deprecated in a future release\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "confidentialInstanceType",
                        "enableConfidentialCompute"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageGuestAccelerator:InstanceFromMachineImageGuestAccelerator": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource exposed to this instance. E.g. nvidia-tesla-k80.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "count",
                "type"
            ]
        },
        "gcp:compute/InstanceFromMachineImageInstanceEncryptionKey:InstanceFromMachineImageInstanceEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the customer's encryption key.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "kmsKeyServiceAccount",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageNetworkInterface:InstanceFromMachineImageNetworkInterface": {
            "properties": {
                "accessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromMachineImageNetworkInterfaceAccessConfig:InstanceFromMachineImageNetworkInterfaceAccessConfig"
                    },
                    "description": "Access configurations, i.e. IPs via which this instance can be accessed via the Internet.\n"
                },
                "aliasIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromMachineImageNetworkInterfaceAliasIpRange:InstanceFromMachineImageNetworkInterfaceAliasIpRange"
                    },
                    "description": "An array of alias IP ranges for this network interface.\n"
                },
                "aliasIpv6Ranges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromMachineImageNetworkInterfaceAliasIpv6Range:InstanceFromMachineImageNetworkInterfaceAliasIpv6Range"
                    },
                    "description": "An array of IPv6 alias IP ranges for this network interface.\n"
                },
                "igmpQuery": {
                    "type": "string",
                    "description": "Indicates whether igmp query is enabled on the network interface or not. If enabled, also indicates the version of IGMP supported.\n"
                },
                "internalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "The prefix length of the primary internal IPv6 range.\n"
                },
                "ipv6AccessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromMachineImageNetworkInterfaceIpv6AccessConfig:InstanceFromMachineImageNetworkInterfaceIpv6AccessConfig"
                    },
                    "description": "An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access.\n"
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "MAC address assigned to this network interface.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A unique name for the resource, required by GCE.\nChanging this forces a new resource to be created.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the network attached to this interface.\n"
                },
                "networkAttachment": {
                    "type": "string",
                    "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.\n",
                    "willReplaceOnChanges": true
                },
                "networkIp": {
                    "type": "string",
                    "description": "The private IP address assigned to the instance.\n"
                },
                "nicType": {
                    "type": "string",
                    "description": "The type of vNIC to be used on this interface. Possible values:GVNIC, VIRTIO_NET, IDPF, MRDMA, IRDMA and IDPF\n",
                    "willReplaceOnChanges": true
                },
                "parentNicName": {
                    "type": "string",
                    "description": "Name of the parent network interface of a dynamic network interface.\n"
                },
                "queueCount": {
                    "type": "integer",
                    "description": "The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.\n",
                    "willReplaceOnChanges": true
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                },
                "stackType": {
                    "type": "string",
                    "description": "The stack type for this network interface to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the subnetwork attached to this interface.\n"
                },
                "subnetworkProject": {
                    "type": "string",
                    "description": "The project in which the subnetwork belongs.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "VLAN tag of a dynamic network interface, must be an integer in the range from 2 to 255 inclusively.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "accessConfigs",
                        "aliasIpRanges",
                        "aliasIpv6Ranges",
                        "igmpQuery",
                        "internalIpv6PrefixLength",
                        "ipv6AccessConfigs",
                        "ipv6AccessType",
                        "ipv6Address",
                        "macAddress",
                        "name",
                        "network",
                        "networkAttachment",
                        "networkIp",
                        "nicType",
                        "parentNicName",
                        "queueCount",
                        "securityPolicy",
                        "stackType",
                        "subnetwork",
                        "subnetworkProject",
                        "vlan"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageNetworkInterfaceAccessConfig:InstanceFromMachineImageNetworkInterfaceAccessConfig": {
            "properties": {
                "natIp": {
                    "type": "string",
                    "description": "The IP address that is be 1:1 mapped to the instance's network ip.\n"
                },
                "networkTier": {
                    "type": "string",
                    "description": "The networking tier used for configuring this instance. One of PREMIUM or STANDARD.\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The DNS domain name for the public PTR record.\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "natIp",
                        "networkTier",
                        "publicPtrDomainName",
                        "securityPolicy"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageNetworkInterfaceAliasIpRange:InstanceFromMachineImageNetworkInterfaceAliasIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipCidrRange",
                        "subnetworkRangeName"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageNetworkInterfaceAliasIpv6Range:InstanceFromMachineImageNetworkInterfaceAliasIpv6Range": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IPv6 CIDR range represented by this alias IP range.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipCidrRange",
                        "subnetworkRangeName"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageNetworkInterfaceIpv6AccessConfig:InstanceFromMachineImageNetworkInterfaceIpv6AccessConfig": {
            "properties": {
                "externalIpv6": {
                    "type": "string",
                    "description": "The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. To use a static external IP address, it must be unused and in the same region as the instance's zone. If not specified, Google Cloud will automatically assign an external IPv6 address from the instance's subnetwork.\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6PrefixLength": {
                    "type": "string",
                    "description": "The prefix length of the external IPv6 range.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "A unique name for the resource, required by GCE.\nChanging this forces a new resource to be created.\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The domain name to be used when creating DNSv6 records for the external IPv6 ranges.\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                }
            },
            "type": "object",
            "required": [
                "networkTier"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "externalIpv6",
                        "externalIpv6PrefixLength",
                        "name",
                        "networkTier",
                        "publicPtrDomainName",
                        "securityPolicy"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageNetworkPerformanceConfig:InstanceFromMachineImageNetworkPerformanceConfig": {
            "properties": {
                "totalEgressBandwidthTier": {
                    "type": "string",
                    "description": "The egress bandwidth tier to enable. Possible values:TIER_1, DEFAULT\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "totalEgressBandwidthTier"
            ]
        },
        "gcp:compute/InstanceFromMachineImageParams:InstanceFromMachineImageParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "resourceManagerTags"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageReservationAffinity:InstanceFromMachineImageReservationAffinity": {
            "properties": {
                "specificReservation": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageReservationAffinitySpecificReservation:InstanceFromMachineImageReservationAffinitySpecificReservation",
                    "description": "Specifies the label selector for the reservation to use.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of reservation from which this instance can consume resources.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "specificReservation",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageReservationAffinitySpecificReservation:InstanceFromMachineImageReservationAffinitySpecificReservation": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.\n",
                    "willReplaceOnChanges": true
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "gcp:compute/InstanceFromMachineImageScheduling:InstanceFromMachineImageScheduling": {
            "properties": {
                "automaticRestart": {
                    "type": "boolean",
                    "description": "Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user).\n"
                },
                "availabilityDomain": {
                    "type": "integer",
                    "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
                },
                "gracefulShutdown": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageSchedulingGracefulShutdown:InstanceFromMachineImageSchedulingGracefulShutdown",
                    "description": "Settings for the instance to perform a graceful shutdown.\n"
                },
                "hostErrorTimeoutSeconds": {
                    "type": "integer",
                    "description": "Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n"
                },
                "instanceTerminationAction": {
                    "type": "string",
                    "description": "Specifies the action GCE should take when SPOT VM is preempted.\n"
                },
                "localSsdRecoveryTimeout": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeout:InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeout",
                    "description": "Specifies the maximum amount of time a Local Ssd Vm should wait while\n  recovery of the Local Ssd state is attempted. Its value should be in\n  between 0 and 168 hours with hour granularity and the default value being 1\n  hour.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC\n"
                },
                "maxRunDuration": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageSchedulingMaxRunDuration:InstanceFromMachineImageSchedulingMaxRunDuration",
                    "description": "The timeout for new network connections to hosts.\n",
                    "willReplaceOnChanges": true
                },
                "minNodeCpus": {
                    "type": "integer"
                },
                "nodeAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromMachineImageSchedulingNodeAffinity:InstanceFromMachineImageSchedulingNodeAffinity"
                    },
                    "description": "Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems.\n"
                },
                "onHostMaintenance": {
                    "type": "string",
                    "description": "Describes maintenance behavior for the instance. One of MIGRATE or TERMINATE,\n"
                },
                "onInstanceStopAction": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageSchedulingOnInstanceStopAction:InstanceFromMachineImageSchedulingOnInstanceStopAction",
                    "description": "Defines the behaviour for instances with the instance_termination_action.\n",
                    "willReplaceOnChanges": true
                },
                "preemptible": {
                    "type": "boolean",
                    "description": "Whether the instance is preemptible.\n",
                    "willReplaceOnChanges": true
                },
                "preemptionNoticeDuration": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageSchedulingPreemptionNoticeDuration:InstanceFromMachineImageSchedulingPreemptionNoticeDuration",
                    "description": "The duration of the notice that the instance will receive before it is preempted.\n"
                },
                "provisioningModel": {
                    "type": "string",
                    "description": "Whether the instance is spot. If this is set as SPOT.\n",
                    "willReplaceOnChanges": true
                },
                "skipGuestOsShutdown": {
                    "type": "boolean",
                    "description": "Default is false and there will be 120 seconds between GCE ACPI G2 Soft Off and ACPI G3 Mechanical Off for Standard VMs and 30 seconds for Spot VMs.\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Specifies the timestamp, when the instance will be terminated,\nin RFC3339 text format. If specified, the instance termination action\nwill be performed at the termination time.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "automaticRestart",
                        "availabilityDomain",
                        "gracefulShutdown",
                        "hostErrorTimeoutSeconds",
                        "instanceTerminationAction",
                        "localSsdRecoveryTimeout",
                        "maintenanceInterval",
                        "maxRunDuration",
                        "minNodeCpus",
                        "nodeAffinities",
                        "onHostMaintenance",
                        "onInstanceStopAction",
                        "preemptible",
                        "preemptionNoticeDuration",
                        "provisioningModel",
                        "skipGuestOsShutdown",
                        "terminationTime"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageSchedulingGracefulShutdown:InstanceFromMachineImageSchedulingGracefulShutdown": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Opts-in for graceful shutdown.\n"
                },
                "maxDuration": {
                    "$ref": "#/types/gcp:compute/InstanceFromMachineImageSchedulingGracefulShutdownMaxDuration:InstanceFromMachineImageSchedulingGracefulShutdownMaxDuration",
                    "description": "The time allotted for the instance to gracefully shut down.\n\t\t\t\t\t\t\t\t\t\tIf the graceful shutdown isn't complete after this time, then the instance\n\t\t\t\t\t\t\t\t\t\ttransitions to the STOPPING state.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "maxDuration"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageSchedulingGracefulShutdownMaxDuration:InstanceFromMachineImageSchedulingGracefulShutdownMaxDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolution. Durations less than one second are represented\n\t\t\t\t\t\t\t\t\t\t\t\t\twith a 0 seconds field and a positive nanos field. Must\n\t\t\t\t\t\t\t\t\t\t\t\t\tbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\n\t\t\t\t\t\t\t\t\t\t\t\t\tThe value must be between 1 and 3600, which is 3,600 seconds (one hour).\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nanos",
                        "seconds"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeout:InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nanos",
                        "seconds"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageSchedulingMaxRunDuration:InstanceFromMachineImageSchedulingMaxRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nanos",
                        "seconds"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageSchedulingNodeAffinity:InstanceFromMachineImageSchedulingNodeAffinity": {
            "properties": {
                "key": {
                    "type": "string"
                },
                "operator": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "operator",
                "values"
            ]
        },
        "gcp:compute/InstanceFromMachineImageSchedulingOnInstanceStopAction:InstanceFromMachineImageSchedulingOnInstanceStopAction": {
            "properties": {
                "discardLocalSsd": {
                    "type": "boolean",
                    "description": "If true, the contents of any attached Local SSD disks will be discarded.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "discardLocalSsd"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageSchedulingPreemptionNoticeDuration:InstanceFromMachineImageSchedulingPreemptionNoticeDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nanos",
                        "seconds"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageScratchDisk:InstanceFromMachineImageScratchDisk": {
            "properties": {
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk is accessible under /dev/disk/by-id/\n"
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface used for attaching this disk. One of SCSI or NVME.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the disk in gigabytes. One of 375 or 3000.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "interface"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceName",
                        "interface",
                        "size"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageServiceAccount:InstanceFromMachineImageServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "The service account e-mail address.\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service scopes.\n"
                }
            },
            "type": "object",
            "required": [
                "scopes"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "email",
                        "scopes"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageShieldedInstanceConfig:InstanceFromMachineImageShieldedInstanceConfig": {
            "properties": {
                "enableIntegrityMonitoring": {
                    "type": "boolean",
                    "description": "Whether integrity monitoring is enabled for the instance.\n"
                },
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "Whether secure boot is enabled for the instance.\n"
                },
                "enableVtpm": {
                    "type": "boolean",
                    "description": "Whether the instance uses vTPM.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableIntegrityMonitoring",
                        "enableSecureBoot",
                        "enableVtpm"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromMachineImageSourceMachineImageEncryptionKey:InstanceFromMachineImageSourceMachineImageEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "secret": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateAdvancedMachineFeatures:InstanceFromTemplateAdvancedMachineFeatures": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Whether to enable nested virtualization or not.\n"
                },
                "enableUefiNetworking": {
                    "type": "boolean",
                    "description": "Whether to enable UEFI networking for the instance.\n",
                    "willReplaceOnChanges": true
                },
                "performanceMonitoringUnit": {
                    "type": "string",
                    "description": "The PMU is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are \"STANDARD\", \"ENHANCED\", and \"ARCHITECTURAL\".\n"
                },
                "threadsPerCore": {
                    "type": "integer",
                    "description": "The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.\n"
                },
                "turboMode": {
                    "type": "string",
                    "description": "Turbo frequency mode to use for the instance. Currently supported modes is \"ALL_CORE_MAX\".\n"
                },
                "visibleCoreCount": {
                    "type": "integer",
                    "description": "The number of physical cores to expose to an instance. Multiply by the number of threads per core to compute the total number of virtual CPUs to expose to the instance. If unset, the number of cores is inferred from the instance\\'s nominal CPU count and the underlying platform\\'s SMT width.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableNestedVirtualization",
                        "enableUefiNetworking",
                        "performanceMonitoringUnit",
                        "threadsPerCore",
                        "turboMode",
                        "visibleCoreCount"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateAttachedDisk:InstanceFromTemplateAttachedDisk": {
            "properties": {
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk is accessible under /dev/disk/by-id/\n"
                },
                "diskEncryptionKeyRaw": {
                    "type": "string",
                    "description": "A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n",
                    "secret": true
                },
                "diskEncryptionKeyRsa": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n",
                    "secret": true
                },
                "diskEncryptionKeySha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.\n"
                },
                "diskEncryptionServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used\n"
                },
                "forceAttach": {
                    "type": "boolean",
                    "description": "Whether to force attach the regional disk even if it's currently attached to another instance. If you try to force attach a zonal disk to an instance, you will receive an error. Setting this parameter cause VM recreation.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Read/write mode for the disk. One of \"READ_ONLY\" or \"READ_WRITE\".\n"
                },
                "source": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the disk attached to this instance.\n"
                }
            },
            "type": "object",
            "required": [
                "source"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceName",
                        "diskEncryptionKeyRaw",
                        "diskEncryptionKeyRsa",
                        "diskEncryptionKeySha256",
                        "diskEncryptionServiceAccount",
                        "forceAttach",
                        "kmsKeySelfLink",
                        "mode",
                        "source"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateBootDisk:InstanceFromTemplateBootDisk": {
            "properties": {
                "autoDelete": {
                    "type": "boolean",
                    "description": "Whether the disk will be auto-deleted when the instance is deleted.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "Name with which attached disk will be accessible under /dev/disk/by-id/\n",
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeyRaw": {
                    "type": "string",
                    "description": "A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeyRsa": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKeySha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.\n"
                },
                "diskEncryptionServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used\n",
                    "willReplaceOnChanges": true
                },
                "forceAttach": {
                    "type": "boolean",
                    "description": "Whether to force attach the regional disk even if it's currently attached to another instance. If you try to force attach a zonal disk to an instance, you will receive an error. Setting this parameter cause VM recreation.\n",
                    "willReplaceOnChanges": true
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features to enable on the guest operating system. Applicable only for bootable images.\n",
                    "willReplaceOnChanges": true
                },
                "initializeParams": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateBootDiskInitializeParams:InstanceFromTemplateBootDiskInitializeParams",
                    "description": "Parameters with which a disk was created alongside the instance.\n",
                    "willReplaceOnChanges": true
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface used for attaching this disk. One of SCSI or NVME. (This field is shared with\u003cspan pulumi-lang-nodejs=\" attachedDisk \" pulumi-lang-dotnet=\" AttachedDisk \" pulumi-lang-go=\" attachedDisk \" pulumi-lang-python=\" attached_disk \" pulumi-lang-yaml=\" attachedDisk \" pulumi-lang-java=\" attachedDisk \" pulumi-lang-hcl=\" attached_disk \"\u003e attachedDisk \u003c/span\u003eand only used for specific cases, please don't specify this field without advice from Google.)\n"
                },
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n",
                    "willReplaceOnChanges": true
                },
                "mode": {
                    "type": "string",
                    "description": "Read/write mode for the disk. One of \"READ_ONLY\" or \"READ_WRITE\".\n",
                    "willReplaceOnChanges": true
                },
                "source": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the disk attached to this instance.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "autoDelete",
                        "deviceName",
                        "diskEncryptionKeyRaw",
                        "diskEncryptionKeyRsa",
                        "diskEncryptionKeySha256",
                        "diskEncryptionServiceAccount",
                        "forceAttach",
                        "guestOsFeatures",
                        "initializeParams",
                        "interface",
                        "kmsKeySelfLink",
                        "mode",
                        "source"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateBootDiskInitializeParams:InstanceFromTemplateBootDiskInitializeParams": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": "The architecture of the disk. One of \"X86_64\" or \"ARM64\".\n",
                    "willReplaceOnChanges": true
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "A flag to enable confidential compute mode on boot disk\n",
                    "willReplaceOnChanges": true
                },
                "image": {
                    "type": "string",
                    "description": "The image from which this disk was initialised.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of key/value label pairs assigned to the disk.\n"
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle.\n",
                    "willReplaceOnChanges": true
                },
                "replicaZones": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of short names or\u003cspan pulumi-lang-nodejs=\" selfLinks \" pulumi-lang-dotnet=\" SelfLinks \" pulumi-lang-go=\" selfLinks \" pulumi-lang-python=\" self_links \" pulumi-lang-yaml=\" selfLinks \" pulumi-lang-java=\" selfLinks \" pulumi-lang-hcl=\" self_links \"\u003e selfLinks \u003c/span\u003eof zones in which to create a regional disk.\n",
                    "willReplaceOnChanges": true
                },
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty.\n",
                    "willReplaceOnChanges": true
                },
                "resourcePolicies": {
                    "type": "string",
                    "description": "A list of\u003cspan pulumi-lang-nodejs=\" selfLinks \" pulumi-lang-dotnet=\" SelfLinks \" pulumi-lang-go=\" selfLinks \" pulumi-lang-python=\" self_links \" pulumi-lang-yaml=\" selfLinks \" pulumi-lang-java=\" selfLinks \" pulumi-lang-hcl=\" self_links \"\u003e selfLinks \u003c/span\u003eof resource policies to attach to the instance's boot disk. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes.\n"
                },
                "snapshot": {
                    "type": "string",
                    "description": "The snapshot from which this disk was initialised.\n",
                    "willReplaceOnChanges": true
                },
                "sourceImageEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateBootDiskInitializeParamsSourceImageEncryptionKey:InstanceFromTemplateBootDiskInitializeParamsSourceImageEncryptionKey",
                    "description": "The encryption key used to decrypt the source image.\n"
                },
                "sourceSnapshotEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateBootDiskInitializeParamsSourceSnapshotEncryptionKey:InstanceFromTemplateBootDiskInitializeParamsSourceSnapshotEncryptionKey",
                    "description": "The encryption key used to decrypt the source snapshot.\n"
                },
                "storagePool": {
                    "type": "string",
                    "description": "The URL of the storage pool in which the new disk is created\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The Google Compute Engine disk type. Such as pd-standard, pd-ssd or pd-balanced.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "architecture",
                        "enableConfidentialCompute",
                        "image",
                        "labels",
                        "provisionedIops",
                        "provisionedThroughput",
                        "replicaZones",
                        "resourceManagerTags",
                        "resourcePolicies",
                        "size",
                        "snapshot",
                        "sourceImageEncryptionKey",
                        "sourceSnapshotEncryptionKey",
                        "storagePool",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateBootDiskInitializeParamsSourceImageEncryptionKey:InstanceFromTemplateBootDiskInitializeParamsSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the encryption key used to encrypt this disk.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "kmsKeyServiceAccount",
                        "rawKey",
                        "rsaEncryptedKey",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateBootDiskInitializeParamsSourceSnapshotEncryptionKey:InstanceFromTemplateBootDiskInitializeParamsSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the encryption key used to encrypt this disk.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "kmsKeyServiceAccount",
                        "rawKey",
                        "rsaEncryptedKey",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateConfidentialInstanceConfig:InstanceFromTemplateConfidentialInstanceConfig": {
            "properties": {
                "confidentialInstanceType": {
                    "type": "string",
                    "description": "The confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP,\u003cspan pulumi-lang-nodejs=\" minCpuPlatform \" pulumi-lang-dotnet=\" MinCpuPlatform \" pulumi-lang-go=\" minCpuPlatform \" pulumi-lang-python=\" min_cpu_platform \" pulumi-lang-yaml=\" minCpuPlatform \" pulumi-lang-java=\" minCpuPlatform \" pulumi-lang-hcl=\" min_cpu_platform \"\u003e minCpuPlatform \u003c/span\u003e=\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required.\n"
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have confidential compute enabled. Field will be deprecated in a future release\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "confidentialInstanceType",
                        "enableConfidentialCompute"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateGuestAccelerator:InstanceFromTemplateGuestAccelerator": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource exposed to this instance. E.g. nvidia-tesla-k80.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "count",
                "type"
            ]
        },
        "gcp:compute/InstanceFromTemplateInstanceEncryptionKey:InstanceFromTemplateInstanceEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the customer's encryption key.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "kmsKeyServiceAccount",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateNetworkInterface:InstanceFromTemplateNetworkInterface": {
            "properties": {
                "accessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromTemplateNetworkInterfaceAccessConfig:InstanceFromTemplateNetworkInterfaceAccessConfig"
                    },
                    "description": "Access configurations, i.e. IPs via which this instance can be accessed via the Internet.\n"
                },
                "aliasIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromTemplateNetworkInterfaceAliasIpRange:InstanceFromTemplateNetworkInterfaceAliasIpRange"
                    },
                    "description": "An array of alias IP ranges for this network interface.\n"
                },
                "aliasIpv6Ranges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromTemplateNetworkInterfaceAliasIpv6Range:InstanceFromTemplateNetworkInterfaceAliasIpv6Range"
                    },
                    "description": "An array of IPv6 alias IP ranges for this network interface.\n"
                },
                "igmpQuery": {
                    "type": "string",
                    "description": "Indicates whether igmp query is enabled on the network interface or not. If enabled, also indicates the version of IGMP supported.\n"
                },
                "internalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "The prefix length of the primary internal IPv6 range.\n"
                },
                "ipv6AccessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromTemplateNetworkInterfaceIpv6AccessConfig:InstanceFromTemplateNetworkInterfaceIpv6AccessConfig"
                    },
                    "description": "An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access.\n"
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "MAC address assigned to this network interface.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A unique name for the resource, required by GCE.\nChanging this forces a new resource to be created.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the network attached to this interface.\n"
                },
                "networkAttachment": {
                    "type": "string",
                    "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.\n",
                    "willReplaceOnChanges": true
                },
                "networkIp": {
                    "type": "string",
                    "description": "The private IP address assigned to the instance.\n"
                },
                "nicType": {
                    "type": "string",
                    "description": "The type of vNIC to be used on this interface. Possible values:GVNIC, VIRTIO_NET, IDPF, MRDMA, IRDMA and IDPF\n",
                    "willReplaceOnChanges": true
                },
                "parentNicName": {
                    "type": "string",
                    "description": "Name of the parent network interface of a dynamic network interface.\n"
                },
                "queueCount": {
                    "type": "integer",
                    "description": "The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.\n",
                    "willReplaceOnChanges": true
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                },
                "stackType": {
                    "type": "string",
                    "description": "The stack type for this network interface to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the subnetwork attached to this interface.\n"
                },
                "subnetworkProject": {
                    "type": "string",
                    "description": "The project in which the subnetwork belongs.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "VLAN tag of a dynamic network interface, must be an integer in the range from 2 to 255 inclusively.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "accessConfigs",
                        "aliasIpRanges",
                        "aliasIpv6Ranges",
                        "igmpQuery",
                        "internalIpv6PrefixLength",
                        "ipv6AccessConfigs",
                        "ipv6AccessType",
                        "ipv6Address",
                        "macAddress",
                        "name",
                        "network",
                        "networkAttachment",
                        "networkIp",
                        "nicType",
                        "parentNicName",
                        "queueCount",
                        "securityPolicy",
                        "stackType",
                        "subnetwork",
                        "subnetworkProject",
                        "vlan"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateNetworkInterfaceAccessConfig:InstanceFromTemplateNetworkInterfaceAccessConfig": {
            "properties": {
                "natIp": {
                    "type": "string",
                    "description": "The IP address that is be 1:1 mapped to the instance's network ip.\n"
                },
                "networkTier": {
                    "type": "string",
                    "description": "The networking tier used for configuring this instance. One of PREMIUM or STANDARD.\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The DNS domain name for the public PTR record.\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "natIp",
                        "networkTier",
                        "publicPtrDomainName",
                        "securityPolicy"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateNetworkInterfaceAliasIpRange:InstanceFromTemplateNetworkInterfaceAliasIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipCidrRange",
                        "subnetworkRangeName"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateNetworkInterfaceAliasIpv6Range:InstanceFromTemplateNetworkInterfaceAliasIpv6Range": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IPv6 CIDR range represented by this alias IP range.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipCidrRange",
                        "subnetworkRangeName"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateNetworkInterfaceIpv6AccessConfig:InstanceFromTemplateNetworkInterfaceIpv6AccessConfig": {
            "properties": {
                "externalIpv6": {
                    "type": "string",
                    "description": "The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. To use a static external IP address, it must be unused and in the same region as the instance's zone. If not specified, Google Cloud will automatically assign an external IPv6 address from the instance's subnetwork.\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6PrefixLength": {
                    "type": "string",
                    "description": "The prefix length of the external IPv6 range.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "A unique name for the resource, required by GCE.\nChanging this forces a new resource to be created.\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The domain name to be used when creating DNSv6 records for the external IPv6 ranges.\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                }
            },
            "type": "object",
            "required": [
                "networkTier"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "externalIpv6",
                        "externalIpv6PrefixLength",
                        "name",
                        "networkTier",
                        "publicPtrDomainName",
                        "securityPolicy"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateNetworkPerformanceConfig:InstanceFromTemplateNetworkPerformanceConfig": {
            "properties": {
                "totalEgressBandwidthTier": {
                    "type": "string",
                    "description": "The egress bandwidth tier to enable. Possible values:TIER_1, DEFAULT\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "totalEgressBandwidthTier"
            ]
        },
        "gcp:compute/InstanceFromTemplateParams:InstanceFromTemplateParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "resourceManagerTags"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateReservationAffinity:InstanceFromTemplateReservationAffinity": {
            "properties": {
                "specificReservation": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateReservationAffinitySpecificReservation:InstanceFromTemplateReservationAffinitySpecificReservation",
                    "description": "Specifies the label selector for the reservation to use.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of reservation from which this instance can consume resources.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "specificReservation",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateReservationAffinitySpecificReservation:InstanceFromTemplateReservationAffinitySpecificReservation": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.\n",
                    "willReplaceOnChanges": true
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "gcp:compute/InstanceFromTemplateScheduling:InstanceFromTemplateScheduling": {
            "properties": {
                "automaticRestart": {
                    "type": "boolean",
                    "description": "Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user).\n"
                },
                "availabilityDomain": {
                    "type": "integer",
                    "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
                },
                "gracefulShutdown": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateSchedulingGracefulShutdown:InstanceFromTemplateSchedulingGracefulShutdown",
                    "description": "Settings for the instance to perform a graceful shutdown.\n"
                },
                "hostErrorTimeoutSeconds": {
                    "type": "integer",
                    "description": "Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n"
                },
                "instanceTerminationAction": {
                    "type": "string",
                    "description": "Specifies the action GCE should take when SPOT VM is preempted.\n"
                },
                "localSsdRecoveryTimeout": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateSchedulingLocalSsdRecoveryTimeout:InstanceFromTemplateSchedulingLocalSsdRecoveryTimeout",
                    "description": "Specifies the maximum amount of time a Local Ssd Vm should wait while\n  recovery of the Local Ssd state is attempted. Its value should be in\n  between 0 and 168 hours with hour granularity and the default value being 1\n  hour.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC\n"
                },
                "maxRunDuration": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateSchedulingMaxRunDuration:InstanceFromTemplateSchedulingMaxRunDuration",
                    "description": "The timeout for new network connections to hosts.\n",
                    "willReplaceOnChanges": true
                },
                "minNodeCpus": {
                    "type": "integer"
                },
                "nodeAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceFromTemplateSchedulingNodeAffinity:InstanceFromTemplateSchedulingNodeAffinity"
                    },
                    "description": "Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems.\n"
                },
                "onHostMaintenance": {
                    "type": "string",
                    "description": "Describes maintenance behavior for the instance. One of MIGRATE or TERMINATE,\n"
                },
                "onInstanceStopAction": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateSchedulingOnInstanceStopAction:InstanceFromTemplateSchedulingOnInstanceStopAction",
                    "description": "Defines the behaviour for instances with the instance_termination_action.\n",
                    "willReplaceOnChanges": true
                },
                "preemptible": {
                    "type": "boolean",
                    "description": "Whether the instance is preemptible.\n",
                    "willReplaceOnChanges": true
                },
                "preemptionNoticeDuration": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateSchedulingPreemptionNoticeDuration:InstanceFromTemplateSchedulingPreemptionNoticeDuration",
                    "description": "The duration of the notice that the instance will receive before it is preempted.\n"
                },
                "provisioningModel": {
                    "type": "string",
                    "description": "Whether the instance is spot. If this is set as SPOT.\n",
                    "willReplaceOnChanges": true
                },
                "skipGuestOsShutdown": {
                    "type": "boolean",
                    "description": "Default is false and there will be 120 seconds between GCE ACPI G2 Soft Off and ACPI G3 Mechanical Off for Standard VMs and 30 seconds for Spot VMs.\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Specifies the timestamp, when the instance will be terminated,\nin RFC3339 text format. If specified, the instance termination action\nwill be performed at the termination time.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "automaticRestart",
                        "availabilityDomain",
                        "gracefulShutdown",
                        "hostErrorTimeoutSeconds",
                        "instanceTerminationAction",
                        "localSsdRecoveryTimeout",
                        "maintenanceInterval",
                        "maxRunDuration",
                        "minNodeCpus",
                        "nodeAffinities",
                        "onHostMaintenance",
                        "onInstanceStopAction",
                        "preemptible",
                        "preemptionNoticeDuration",
                        "provisioningModel",
                        "skipGuestOsShutdown",
                        "terminationTime"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateSchedulingGracefulShutdown:InstanceFromTemplateSchedulingGracefulShutdown": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Opts-in for graceful shutdown.\n"
                },
                "maxDuration": {
                    "$ref": "#/types/gcp:compute/InstanceFromTemplateSchedulingGracefulShutdownMaxDuration:InstanceFromTemplateSchedulingGracefulShutdownMaxDuration",
                    "description": "The time allotted for the instance to gracefully shut down.\n\t\t\t\t\t\t\t\t\t\tIf the graceful shutdown isn't complete after this time, then the instance\n\t\t\t\t\t\t\t\t\t\ttransitions to the STOPPING state.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "maxDuration"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateSchedulingGracefulShutdownMaxDuration:InstanceFromTemplateSchedulingGracefulShutdownMaxDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolution. Durations less than one second are represented\n\t\t\t\t\t\t\t\t\t\t\t\t\twith a 0 seconds field and a positive nanos field. Must\n\t\t\t\t\t\t\t\t\t\t\t\t\tbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\n\t\t\t\t\t\t\t\t\t\t\t\t\tThe value must be between 1 and 3600, which is 3,600 seconds (one hour).\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nanos",
                        "seconds"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateSchedulingLocalSsdRecoveryTimeout:InstanceFromTemplateSchedulingLocalSsdRecoveryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nanos",
                        "seconds"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateSchedulingMaxRunDuration:InstanceFromTemplateSchedulingMaxRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nanos",
                        "seconds"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateSchedulingNodeAffinity:InstanceFromTemplateSchedulingNodeAffinity": {
            "properties": {
                "key": {
                    "type": "string"
                },
                "operator": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "operator",
                "values"
            ]
        },
        "gcp:compute/InstanceFromTemplateSchedulingOnInstanceStopAction:InstanceFromTemplateSchedulingOnInstanceStopAction": {
            "properties": {
                "discardLocalSsd": {
                    "type": "boolean",
                    "description": "If true, the contents of any attached Local SSD disks will be discarded.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "discardLocalSsd"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateSchedulingPreemptionNoticeDuration:InstanceFromTemplateSchedulingPreemptionNoticeDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "nanos",
                        "seconds"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateScratchDisk:InstanceFromTemplateScratchDisk": {
            "properties": {
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk is accessible under /dev/disk/by-id/\n"
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface used for attaching this disk. One of SCSI or NVME.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the disk in gigabytes. One of 375 or 3000.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "interface"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceName",
                        "interface",
                        "size"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateServiceAccount:InstanceFromTemplateServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "The service account e-mail address.\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service scopes.\n"
                }
            },
            "type": "object",
            "required": [
                "scopes"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "email",
                        "scopes"
                    ]
                }
            }
        },
        "gcp:compute/InstanceFromTemplateShieldedInstanceConfig:InstanceFromTemplateShieldedInstanceConfig": {
            "properties": {
                "enableIntegrityMonitoring": {
                    "type": "boolean",
                    "description": "Whether integrity monitoring is enabled for the instance.\n"
                },
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "Whether secure boot is enabled for the instance.\n"
                },
                "enableVtpm": {
                    "type": "boolean",
                    "description": "Whether the instance uses vTPM.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableIntegrityMonitoring",
                        "enableSecureBoot",
                        "enableVtpm"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerAllInstancesConfig:InstanceGroupManagerAllInstancesConfig": {
            "properties": {
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": ", The label key-value pairs that you want to patch onto the instance.\n\n- - -\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": ", The metadata key-value pairs that you want to patch onto the instance. For more information, see [Project and instance metadata](https://cloud.google.com/compute/docs/metadata#project_and_instance_metadata).\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceGroupManagerAutoHealingPolicies:InstanceGroupManagerAutoHealingPolicies": {
            "properties": {
                "healthCheck": {
                    "type": "string",
                    "description": "The health check resource that signals autohealing.\n"
                },
                "initialDelaySec": {
                    "type": "integer",
                    "description": "The number of seconds that the managed instance group waits before\nit applies autohealing policies to new instances or recently recreated instances. Between 0 and 3600.\n"
                }
            },
            "type": "object",
            "required": [
                "healthCheck",
                "initialDelaySec"
            ]
        },
        "gcp:compute/InstanceGroupManagerInstanceLifecyclePolicy:InstanceGroupManagerInstanceLifecyclePolicy": {
            "properties": {
                "defaultActionOnFailure": {
                    "type": "string",
                    "description": ", Specifies the action that a MIG performs on a failed VM. If the value of the \u003cspan pulumi-lang-nodejs=\"`onFailedHealthCheck`\" pulumi-lang-dotnet=\"`OnFailedHealthCheck`\" pulumi-lang-go=\"`onFailedHealthCheck`\" pulumi-lang-python=\"`on_failed_health_check`\" pulumi-lang-yaml=\"`onFailedHealthCheck`\" pulumi-lang-java=\"`onFailedHealthCheck`\" pulumi-lang-hcl=\"`on_failed_health_check`\"\u003e`onFailedHealthCheck`\u003c/span\u003e field is `DEFAULT_ACTION`, then the same action also applies to the VMs on which your application fails a health check. Valid options are: `DO_NOTHING`, `REPAIR`. If `DO_NOTHING`, then MIG does not repair a failed VM. If `REPAIR` (default), then MIG automatically repairs a failed VM by recreating it. For more information, see about repairing VMs in a MIG.\n"
                },
                "forceUpdateOnRepair": {
                    "type": "string",
                    "description": ", Specifies whether to apply the group's latest configuration when repairing a VM. Valid options are: `YES`, `NO`. If `YES` and you updated the group's instance template or per-instance configurations after the VM was created, then these changes are applied when VM is repaired. If `NO` (default), then updates are applied in accordance with the group's update policy type.\n"
                },
                "onFailedHealthCheck": {
                    "type": "string",
                    "description": ", Specifies the action that a MIG performs on an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid options are: `DEFAULT_ACTION`, `DO_NOTHING`, `REPAIR`. If `DEFAULT_ACTION` (default), then MIG uses the same action configured for the  \u003cspan pulumi-lang-nodejs=\"`defaultActionOnFailure`\" pulumi-lang-dotnet=\"`DefaultActionOnFailure`\" pulumi-lang-go=\"`defaultActionOnFailure`\" pulumi-lang-python=\"`default_action_on_failure`\" pulumi-lang-yaml=\"`defaultActionOnFailure`\" pulumi-lang-java=\"`defaultActionOnFailure`\" pulumi-lang-hcl=\"`default_action_on_failure`\"\u003e`defaultActionOnFailure`\u003c/span\u003e field. If `DO_NOTHING`, then MIG does not repair unhealthy VM. If `REPAIR`, then MIG automatically repairs an unhealthy VM by recreating it. For more information, see about repairing VMs in a MIG.\n"
                },
                "onRepair": {
                    "$ref": "#/types/gcp:compute/InstanceGroupManagerInstanceLifecyclePolicyOnRepair:InstanceGroupManagerInstanceLifecyclePolicyOnRepair",
                    "description": "), Configuration for VM repairs in the MIG. Structure is documented below.\n- - -\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "onRepair"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerInstanceLifecyclePolicyOnRepair:InstanceGroupManagerInstanceLifecyclePolicyOnRepair": {
            "properties": {
                "allowChangingZone": {
                    "type": "string",
                    "description": ", Specifies whether the MIG can change a VM's zone during a repair. If \"YES\", MIG can select a different zone for the VM during a repair. Else if \"NO\", MIG cannot change a VM's zone during a repair. The default value of\u003cspan pulumi-lang-nodejs=\" allowChangingZone \" pulumi-lang-dotnet=\" AllowChangingZone \" pulumi-lang-go=\" allowChangingZone \" pulumi-lang-python=\" allow_changing_zone \" pulumi-lang-yaml=\" allowChangingZone \" pulumi-lang-java=\" allowChangingZone \" pulumi-lang-hcl=\" allow_changing_zone \"\u003e allowChangingZone \u003c/span\u003eis \"NO\".\n\n- - -\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceGroupManagerNamedPort:InstanceGroupManagerNamedPort": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the port.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number.\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port"
            ]
        },
        "gcp:compute/InstanceGroupManagerParams:InstanceGroupManagerParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources)\n\n- - -\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceGroupManagerResourcePolicies:InstanceGroupManagerResourcePolicies": {
            "properties": {
                "workloadPolicy": {
                    "type": "string",
                    "description": "The URL of the workload policy that is specified for this managed instance group. It can be a full or partial URL.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceGroupManagerStandbyPolicy:InstanceGroupManagerStandbyPolicy": {
            "properties": {
                "initialDelaySec": {
                    "type": "integer",
                    "description": "Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. Valid options are: `MANUAL`, `SCALE_OUT_POOL`. If `MANUAL`(default), you have full control over which VMs are stopped and suspended in the MIG. If `SCALE_OUT_POOL`, the MIG uses the VMs from the standby pools to accelerate the scale out by resuming or starting them and then automatically replenishes the standby pool with new VMs to maintain the target sizes.\n- - -\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "initialDelaySec",
                        "mode"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerStatefulDisk:InstanceGroupManagerStatefulDisk": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": ", A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the disk when the VM is deleted, but do not delete the disk. `ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently deleted from the instance group. The default is `NEVER`.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": ", The device name of the disk to be attached.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceName"
            ]
        },
        "gcp:compute/InstanceGroupManagerStatefulExternalIp:InstanceGroupManagerStatefulExternalIp": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": ", A value that prescribes what should happen to the external ip when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the ip when the VM is deleted, but do not delete the ip. `ON_PERMANENT_INSTANCE_DELETION` will delete the external ip when the VM is permanently deleted from the instance group.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": ", The network interface name of the external Ip. Possible value: \u003cspan pulumi-lang-nodejs=\"`nic0`\" pulumi-lang-dotnet=\"`Nic0`\" pulumi-lang-go=\"`nic0`\" pulumi-lang-python=\"`nic0`\" pulumi-lang-yaml=\"`nic0`\" pulumi-lang-java=\"`nic0`\" pulumi-lang-hcl=\"`nic0`\"\u003e`nic0`\u003c/span\u003e\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceGroupManagerStatefulInternalIp:InstanceGroupManagerStatefulInternalIp": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": ", A value that prescribes what should happen to the internal ip when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the ip when the VM is deleted, but do not delete the ip. `ON_PERMANENT_INSTANCE_DELETION` will delete the internal ip when the VM is permanently deleted from the instance group.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": ", The network interface name of the internal Ip. Possible value: \u003cspan pulumi-lang-nodejs=\"`nic0`\" pulumi-lang-dotnet=\"`Nic0`\" pulumi-lang-go=\"`nic0`\" pulumi-lang-python=\"`nic0`\" pulumi-lang-yaml=\"`nic0`\" pulumi-lang-java=\"`nic0`\" pulumi-lang-hcl=\"`nic0`\"\u003e`nic0`\u003c/span\u003e\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceGroupManagerStatus:InstanceGroupManagerStatus": {
            "properties": {
                "allInstancesConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceGroupManagerStatusAllInstancesConfig:InstanceGroupManagerStatusAllInstancesConfig"
                    },
                    "description": "Properties to set on all instances in the group. After setting\nallInstancesConfig on the group, you must update the group's instances to\napply the configuration.\n"
                },
                "isStable": {
                    "type": "boolean",
                    "description": "A bit indicating whether the managed instance group is in a stable state. A stable state means that: none of the instances in the managed instance group is currently undergoing any type of change (for example, creation, restart, or deletion); no future changes are scheduled for instances in the managed instance group; and the managed instance group itself is not being modified.\n"
                },
                "statefuls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceGroupManagerStatusStateful:InstanceGroupManagerStatusStateful"
                    },
                    "description": "Stateful status of the given Instance Group Manager.\n"
                },
                "versionTargets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceGroupManagerStatusVersionTarget:InstanceGroupManagerStatusVersionTarget"
                    },
                    "description": "A bit indicating whether version target has been reached in this managed instance group, i.e. all instances are in their target version. Instances' target version are specified by version field on Instance Group Manager.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "allInstancesConfigs",
                        "isStable",
                        "statefuls",
                        "versionTargets"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerStatusAllInstancesConfig:InstanceGroupManagerStatusAllInstancesConfig": {
            "properties": {
                "currentRevision": {
                    "type": "string",
                    "description": "Current all-instances configuration revision. This value is in RFC3339 text format.\n"
                },
                "effective": {
                    "type": "boolean",
                    "description": "A bit indicating whether this configuration has been applied to all managed instances in the group.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "currentRevision",
                        "effective"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerStatusStateful:InstanceGroupManagerStatusStateful": {
            "properties": {
                "hasStatefulConfig": {
                    "type": "boolean",
                    "description": "A bit indicating whether the managed instance group has stateful configuration, that is, if you have configured any items in a stateful policy or in per-instance configs. The group might report that it has no stateful config even when there is still some preserved state on a managed instance, for example, if you have deleted all PICs but not yet applied those deletions.\n"
                },
                "perInstanceConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceGroupManagerStatusStatefulPerInstanceConfig:InstanceGroupManagerStatusStatefulPerInstanceConfig"
                    },
                    "description": "Status of per-instance configs on the instances.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "hasStatefulConfig",
                        "perInstanceConfigs"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerStatusStatefulPerInstanceConfig:InstanceGroupManagerStatusStatefulPerInstanceConfig": {
            "properties": {
                "allEffective": {
                    "type": "boolean",
                    "description": "A bit indicating if all of the group's per-instance configs (listed in the output of a listPerInstanceConfigs API call) have status `EFFECTIVE` or there are no per-instance-configs.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "allEffective"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerStatusVersionTarget:InstanceGroupManagerStatusVersionTarget": {
            "properties": {
                "isReached": {
                    "type": "boolean",
                    "description": "A bit indicating whether version target has been reached in this managed instance group, i.e. all instances are in their target version. Instances' target version are specified by version field on Instance Group Manager.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "isReached"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerTargetSizePolicy:InstanceGroupManagerTargetSizePolicy": {
            "properties": {
                "mode": {
                    "type": "string",
                    "description": "The mode of target size policy based on which the MIG creates its VMs individually or all at once. Values: \"BULK\", \"INDIVIDUAL\".\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "mode"
            ]
        },
        "gcp:compute/InstanceGroupManagerUpdatePolicy:InstanceGroupManagerUpdatePolicy": {
            "properties": {
                "maxSurgeFixed": {
                    "type": "integer",
                    "description": ", Specifies a fixed number of VM instances. This must be a positive integer. Conflicts with \u003cspan pulumi-lang-nodejs=\"`maxSurgePercent`\" pulumi-lang-dotnet=\"`MaxSurgePercent`\" pulumi-lang-go=\"`maxSurgePercent`\" pulumi-lang-python=\"`max_surge_percent`\" pulumi-lang-yaml=\"`maxSurgePercent`\" pulumi-lang-java=\"`maxSurgePercent`\" pulumi-lang-hcl=\"`max_surge_percent`\"\u003e`maxSurgePercent`\u003c/span\u003e. Both cannot be 0.\n"
                },
                "maxSurgePercent": {
                    "type": "integer",
                    "description": ", Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%. Conflicts with \u003cspan pulumi-lang-nodejs=\"`maxSurgeFixed`\" pulumi-lang-dotnet=\"`MaxSurgeFixed`\" pulumi-lang-go=\"`maxSurgeFixed`\" pulumi-lang-python=\"`max_surge_fixed`\" pulumi-lang-yaml=\"`maxSurgeFixed`\" pulumi-lang-java=\"`maxSurgeFixed`\" pulumi-lang-hcl=\"`max_surge_fixed`\"\u003e`maxSurgeFixed`\u003c/span\u003e.\n"
                },
                "maxUnavailableFixed": {
                    "type": "integer",
                    "description": ", Specifies a fixed number of VM instances. This must be a positive integer.\n"
                },
                "maxUnavailablePercent": {
                    "type": "integer",
                    "description": ", Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%..\n"
                },
                "minReadySec": {
                    "type": "integer",
                    "description": "), Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600]\n"
                },
                "minimalAction": {
                    "type": "string",
                    "description": "Minimal action to be taken on an instance. You can specify either `NONE` to forbid any actions, `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.\n"
                },
                "mostDisruptiveAllowedAction": {
                    "type": "string",
                    "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to allow actions that do not need instance restart, RESTART to allow actions that can be applied without instance replacing or REPLACE to allow all possible actions. If the Updater determines that the minimal update action needed is more disruptive than most disruptive allowed action you specify it will not perform the update at all.\n"
                },
                "replacementMethod": {
                    "type": "string",
                    "description": ", The instance replacement method for managed instance groups. Valid values are: \"RECREATE\", \"SUBSTITUTE\". If SUBSTITUTE (default), the group replaces VM instances with new instances that have randomly generated names. If RECREATE, instance names are preserved.  You must also set\u003cspan pulumi-lang-nodejs=\" maxUnavailableFixed \" pulumi-lang-dotnet=\" MaxUnavailableFixed \" pulumi-lang-go=\" maxUnavailableFixed \" pulumi-lang-python=\" max_unavailable_fixed \" pulumi-lang-yaml=\" maxUnavailableFixed \" pulumi-lang-java=\" maxUnavailableFixed \" pulumi-lang-hcl=\" max_unavailable_fixed \"\u003e maxUnavailableFixed \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" maxUnavailablePercent \" pulumi-lang-dotnet=\" MaxUnavailablePercent \" pulumi-lang-go=\" maxUnavailablePercent \" pulumi-lang-python=\" max_unavailable_percent \" pulumi-lang-yaml=\" maxUnavailablePercent \" pulumi-lang-java=\" maxUnavailablePercent \" pulumi-lang-hcl=\" max_unavailable_percent \"\u003e maxUnavailablePercent \u003c/span\u003eto be greater than 0.\n- - -\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of update process. You can specify either `PROACTIVE` so that the instance group manager proactively executes actions in order to bring instances to their target versions or `OPPORTUNISTIC` so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).\n"
                }
            },
            "type": "object",
            "required": [
                "minimalAction",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxSurgeFixed",
                        "maxUnavailableFixed",
                        "minimalAction",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/InstanceGroupManagerVersion:InstanceGroupManagerVersion": {
            "properties": {
                "instanceTemplate": {
                    "type": "string",
                    "description": "The full URL to an instance template from which all new instances of this version will be created. It is recommended to reference instance templates through their unique id (\u003cspan pulumi-lang-nodejs=\"`selfLinkUnique`\" pulumi-lang-dotnet=\"`SelfLinkUnique`\" pulumi-lang-go=\"`selfLinkUnique`\" pulumi-lang-python=\"`self_link_unique`\" pulumi-lang-yaml=\"`selfLinkUnique`\" pulumi-lang-java=\"`selfLinkUnique`\" pulumi-lang-hcl=\"`self_link_unique`\"\u003e`selfLinkUnique`\u003c/span\u003e attribute).\n"
                },
                "name": {
                    "type": "string",
                    "description": "Version name.\n"
                },
                "targetSize": {
                    "$ref": "#/types/gcp:compute/InstanceGroupManagerVersionTargetSize:InstanceGroupManagerVersionTargetSize",
                    "description": "The number of instances calculated as a fixed number or a percentage depending on the settings. Structure is documented below.\n\n\u003e Exactly one \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\" pulumi-lang-hcl=\"`version`\"\u003e`version`\u003c/span\u003e you specify must not have a \u003cspan pulumi-lang-nodejs=\"`targetSize`\" pulumi-lang-dotnet=\"`TargetSize`\" pulumi-lang-go=\"`targetSize`\" pulumi-lang-python=\"`target_size`\" pulumi-lang-yaml=\"`targetSize`\" pulumi-lang-java=\"`targetSize`\" pulumi-lang-hcl=\"`target_size`\"\u003e`targetSize`\u003c/span\u003e specified. During a rolling update, the instance group manager will fulfill the \u003cspan pulumi-lang-nodejs=\"`targetSize`\" pulumi-lang-dotnet=\"`TargetSize`\" pulumi-lang-go=\"`targetSize`\" pulumi-lang-python=\"`target_size`\" pulumi-lang-yaml=\"`targetSize`\" pulumi-lang-java=\"`targetSize`\" pulumi-lang-hcl=\"`target_size`\"\u003e`targetSize`\u003c/span\u003e\nconstraints of every other \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\" pulumi-lang-hcl=\"`version`\"\u003e`version`\u003c/span\u003e, and any remaining instances will be provisioned with the version where \u003cspan pulumi-lang-nodejs=\"`targetSize`\" pulumi-lang-dotnet=\"`TargetSize`\" pulumi-lang-go=\"`targetSize`\" pulumi-lang-python=\"`target_size`\" pulumi-lang-yaml=\"`targetSize`\" pulumi-lang-java=\"`targetSize`\" pulumi-lang-hcl=\"`target_size`\"\u003e`targetSize`\u003c/span\u003e is unset.\n"
                }
            },
            "type": "object",
            "required": [
                "instanceTemplate"
            ]
        },
        "gcp:compute/InstanceGroupManagerVersionTargetSize:InstanceGroupManagerVersionTargetSize": {
            "properties": {
                "fixed": {
                    "type": "integer",
                    "description": ", The number of instances which are managed for this version. Conflicts with \u003cspan pulumi-lang-nodejs=\"`percent`\" pulumi-lang-dotnet=\"`Percent`\" pulumi-lang-go=\"`percent`\" pulumi-lang-python=\"`percent`\" pulumi-lang-yaml=\"`percent`\" pulumi-lang-java=\"`percent`\" pulumi-lang-hcl=\"`percent`\"\u003e`percent`\u003c/span\u003e.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": ", The number of instances (calculated as percentage) which are managed for this version. Conflicts with \u003cspan pulumi-lang-nodejs=\"`fixed`\" pulumi-lang-dotnet=\"`Fixed`\" pulumi-lang-go=\"`fixed`\" pulumi-lang-python=\"`fixed`\" pulumi-lang-yaml=\"`fixed`\" pulumi-lang-java=\"`fixed`\" pulumi-lang-hcl=\"`fixed`\"\u003e`fixed`\u003c/span\u003e.\nNote that when using \u003cspan pulumi-lang-nodejs=\"`percent`\" pulumi-lang-dotnet=\"`Percent`\" pulumi-lang-go=\"`percent`\" pulumi-lang-python=\"`percent`\" pulumi-lang-yaml=\"`percent`\" pulumi-lang-java=\"`percent`\" pulumi-lang-hcl=\"`percent`\"\u003e`percent`\u003c/span\u003e, rounding will be in favor of explicitly set \u003cspan pulumi-lang-nodejs=\"`targetSize`\" pulumi-lang-dotnet=\"`TargetSize`\" pulumi-lang-go=\"`targetSize`\" pulumi-lang-python=\"`target_size`\" pulumi-lang-yaml=\"`targetSize`\" pulumi-lang-java=\"`targetSize`\" pulumi-lang-hcl=\"`target_size`\"\u003e`targetSize`\u003c/span\u003e values; a managed instance group with 2 instances and 2 \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\" pulumi-lang-hcl=\"`version`\"\u003e`version`\u003c/span\u003es,\none of which has a `target_size.percent` of \u003cspan pulumi-lang-nodejs=\"`60`\" pulumi-lang-dotnet=\"`60`\" pulumi-lang-go=\"`60`\" pulumi-lang-python=\"`60`\" pulumi-lang-yaml=\"`60`\" pulumi-lang-java=\"`60`\" pulumi-lang-hcl=\"`60`\"\u003e`60`\u003c/span\u003e will create 2 instances of that \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\" pulumi-lang-hcl=\"`version`\"\u003e`version`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceGroupNamedPort:InstanceGroupNamedPort": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name which the port will be mapped to.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number to map the name to.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port"
            ]
        },
        "gcp:compute/InstanceGuestAccelerator:InstanceGuestAccelerator": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource to expose to this instance. E.g. `nvidia-tesla-k80`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "count",
                "type"
            ]
        },
        "gcp:compute/InstanceIAMBindingCondition:InstanceIAMBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** This provider considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/InstanceIAMMemberCondition:InstanceIAMMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** This provider considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/InstanceInstanceEncryptionKey:InstanceInstanceEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is\nstored in Google Cloud KMS to encrypt the data on this instance.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the customer's encryption key.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "kmsKeySelfLink",
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/InstanceNetworkInterface:InstanceNetworkInterface": {
            "properties": {
                "accessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceNetworkInterfaceAccessConfig:InstanceNetworkInterfaceAccessConfig"
                    },
                    "description": "Access configurations, i.e. IPs via which this\ninstance can be accessed via the Internet. Omit to ensure that the instance\nis not accessible from the Internet. If omitted, ssh provisioners will not\nwork unless Terraform can send traffic to the instance's network (e.g. via\ntunnel or because it is running on another cloud instance on that network).\nThis block can be specified once per \u003cspan pulumi-lang-nodejs=\"`networkInterface`\" pulumi-lang-dotnet=\"`NetworkInterface`\" pulumi-lang-go=\"`networkInterface`\" pulumi-lang-python=\"`network_interface`\" pulumi-lang-yaml=\"`networkInterface`\" pulumi-lang-java=\"`networkInterface`\" pulumi-lang-hcl=\"`network_interface`\"\u003e`networkInterface`\u003c/span\u003e. Structure documented below.\n"
                },
                "aliasIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceNetworkInterfaceAliasIpRange:InstanceNetworkInterfaceAliasIpRange"
                    },
                    "description": "An\narray of alias IP ranges for this network interface. Can only be specified for network\ninterfaces on subnet-mode networks. Structure documented below.\n"
                },
                "aliasIpv6Ranges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceNetworkInterfaceAliasIpv6Range:InstanceNetworkInterfaceAliasIpv6Range"
                    },
                    "description": "[Beta] An\narray of alias IPv6 ranges for this network interface. Can only be specified for network\ninterfaces on subnet-mode networks. Structure documented below.\n"
                },
                "igmpQuery": {
                    "type": "string",
                    "description": "Indicates whether igmp query is enabled on the network interface or not. If enabled, also indicates the version of IGMP supported.\n"
                },
                "internalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "The prefix length of the primary internal IPv6 range.\n"
                },
                "ipv6AccessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceNetworkInterfaceIpv6AccessConfig:InstanceNetworkInterfaceIpv6AccessConfig"
                    },
                    "description": "An array of IPv6 access configurations for this interface.\nCurrently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig\nspecified, then this instance will have no external IPv6 Internet access. Structure documented below.\n"
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet.\nThis field is always inherited from its subnetwork.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "[Beta] MAC address assigned to this network interface\n"
                },
                "name": {
                    "type": "string",
                    "description": "A unique name for the resource, required by GCE.\nChanging this forces a new resource to be created.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the network to attach this interface to.\nEither \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\" pulumi-lang-hcl=\"`network`\"\u003e`network`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e must be provided. If network isn't provided it will\nbe inferred from the subnetwork.\n"
                },
                "networkAttachment": {
                    "type": "string",
                    "description": "The URL of the network attachment that this interface should connect to in the following format: `projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}`.\n",
                    "willReplaceOnChanges": true
                },
                "networkIp": {
                    "type": "string",
                    "description": "The private IP address to assign to the instance. If\nempty, the address will be automatically assigned.\n"
                },
                "nicType": {
                    "type": "string",
                    "description": "The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET, IDPF, MRDMA, IRDMA, IDPF\n",
                    "willReplaceOnChanges": true
                },
                "parentNicName": {
                    "type": "string",
                    "description": "Name of the parent network interface of a dynamic network interface.\n"
                },
                "queueCount": {
                    "type": "integer",
                    "description": "The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.\n",
                    "willReplaceOnChanges": true
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "Beta A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                },
                "stackType": {
                    "type": "string",
                    "description": "The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6, IPV6_ONLY or IPV4_ONLY. If not specified, IPV4_ONLY will be used.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the subnetwork to attach this\ninterface to. Either \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\" pulumi-lang-hcl=\"`network`\"\u003e`network`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e must be provided. If network isn't provided\nit will be inferred from the subnetwork. The subnetwork must exist in the same region this\ninstance will be created in. If the network resource is in\n[legacy](https://cloud.google.com/vpc/docs/legacy) mode, do not specify this field. If the\nnetwork is in auto subnet mode, specifying the subnetwork is optional. If the network is\nin custom subnet mode, specifying the subnetwork is required.\n"
                },
                "subnetworkProject": {
                    "type": "string",
                    "description": "The project in which the subnetwork belongs.\nIf the \u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e is a self_link, this field is set to the project\ndefined in the subnetwork self_link. If the \u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e is a name and this\nfield is not provided, the provider project is used.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "VLAN tag of a dynamic network interface, must be an integer in the range from 2 to 255 inclusively.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "igmpQuery",
                        "internalIpv6PrefixLength",
                        "ipv6AccessType",
                        "ipv6Address",
                        "macAddress",
                        "name",
                        "network",
                        "networkAttachment",
                        "networkIp",
                        "parentNicName",
                        "stackType",
                        "subnetwork",
                        "subnetworkProject"
                    ]
                }
            }
        },
        "gcp:compute/InstanceNetworkInterfaceAccessConfig:InstanceNetworkInterfaceAccessConfig": {
            "properties": {
                "natIp": {
                    "type": "string",
                    "description": "The IP address that will be 1:1 mapped to the instance's\nnetwork ip. If not given, one will be generated.\n"
                },
                "networkTier": {
                    "type": "string",
                    "description": "The service-level to be provided for IPv6 traffic when the\nsubnet has an external subnet. Only PREMIUM or STANDARD tier is valid for IPv6.\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The domain name to be used when creating DNSv6\nrecords for the external IPv6 ranges..\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "natIp",
                        "networkTier",
                        "securityPolicy"
                    ]
                }
            }
        },
        "gcp:compute/InstanceNetworkInterfaceAliasIpRange:InstanceNetworkInterfaceAliasIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range\nmust belong to the specified subnetwork and cannot contain IP addresses reserved by\nsystem or used by other network interfaces. This range may be a single IP address\n(e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR format string (e.g. 10.1.2.0/24).\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying\nthe secondary range from which to allocate the IP CIDR range for this alias IP\nrange. If left unspecified, the primary range of the subnetwork will be used.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ]
        },
        "gcp:compute/InstanceNetworkInterfaceAliasIpv6Range:InstanceNetworkInterfaceAliasIpv6Range": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IPv6 CIDR range represented by this alias IP range.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ]
        },
        "gcp:compute/InstanceNetworkInterfaceIpv6AccessConfig:InstanceNetworkInterfaceIpv6AccessConfig": {
            "properties": {
                "externalIpv6": {
                    "type": "string",
                    "description": "The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. To use a static external IP address, it must be unused and in the same region as the instance's zone. If not specified, Google Cloud will automatically assign an external IPv6 address from the instance's subnetwork.\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6PrefixLength": {
                    "type": "string",
                    "description": "The prefix length of the external IPv6 range.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "A unique name for the resource, required by GCE.\nChanging this forces a new resource to be created.\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The domain name to be used when creating DNSv6 records for the external IPv6 ranges.\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                }
            },
            "type": "object",
            "required": [
                "networkTier"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "externalIpv6",
                        "externalIpv6PrefixLength",
                        "name",
                        "networkTier",
                        "securityPolicy"
                    ]
                }
            }
        },
        "gcp:compute/InstanceNetworkPerformanceConfig:InstanceNetworkPerformanceConfig": {
            "properties": {
                "totalEgressBandwidthTier": {
                    "type": "string",
                    "description": "The egress bandwidth tier to enable.\nPossible values: TIER_1, DEFAULT\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "totalEgressBandwidthTier"
            ]
        },
        "gcp:compute/InstanceParams:InstanceParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A tag is a key-value pair that can be attached to a Google Cloud resource. You can use tags to conditionally allow or deny policies based on whether a resource has a specific tag. This value is not returned by the API. In Terraform, this value cannot be updated and changing it will recreate the resource.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceReservationAffinity:InstanceReservationAffinity": {
            "properties": {
                "specificReservation": {
                    "$ref": "#/types/gcp:compute/InstanceReservationAffinitySpecificReservation:InstanceReservationAffinitySpecificReservation",
                    "description": "Specifies the label selector for the reservation to use..\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of reservation from which this instance can consume resources.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/InstanceReservationAffinitySpecificReservation:InstanceReservationAffinitySpecificReservation": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.\n",
                    "willReplaceOnChanges": true
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "gcp:compute/InstanceScheduling:InstanceScheduling": {
            "properties": {
                "automaticRestart": {
                    "type": "boolean",
                    "description": "Specifies if the instance should be\nrestarted if it was terminated by Compute Engine (not a user).\nDefaults to true.\n"
                },
                "availabilityDomain": {
                    "type": "integer",
                    "description": "Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.\n"
                },
                "gracefulShutdown": {
                    "$ref": "#/types/gcp:compute/InstanceSchedulingGracefulShutdown:InstanceSchedulingGracefulShutdown",
                    "description": "Beta Settings for the instance to perform a graceful shutdown. Structure is documented below.\n"
                },
                "hostErrorTimeoutSeconds": {
                    "type": "integer",
                    "description": "Beta Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n"
                },
                "instanceTerminationAction": {
                    "type": "string",
                    "description": "Describe the type of termination action for VM. Can be `STOP` or `DELETE`.  Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot)\n"
                },
                "localSsdRecoveryTimeout": {
                    "$ref": "#/types/gcp:compute/InstanceSchedulingLocalSsdRecoveryTimeout:InstanceSchedulingLocalSsdRecoveryTimeout",
                    "description": "(../guides/provider_versions.html.markdown) Specifies the maximum amount of time a Local Ssd Vm should wait while recovery of the Local Ssd state is attempted. Its value should be in between 0 and 168 hours with hour granularity and the default value being 1 hour. Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Beta Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.\n"
                },
                "maxRunDuration": {
                    "$ref": "#/types/gcp:compute/InstanceSchedulingMaxRunDuration:InstanceSchedulingMaxRunDuration",
                    "description": "The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in \u003cspan pulumi-lang-nodejs=\"`instanceTerminationAction`\" pulumi-lang-dotnet=\"`InstanceTerminationAction`\" pulumi-lang-go=\"`instanceTerminationAction`\" pulumi-lang-python=\"`instance_termination_action`\" pulumi-lang-yaml=\"`instanceTerminationAction`\" pulumi-lang-java=\"`instanceTerminationAction`\" pulumi-lang-hcl=\"`instance_termination_action`\"\u003e`instanceTerminationAction`\u003c/span\u003e. Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "minNodeCpus": {
                    "type": "integer",
                    "description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node.\n"
                },
                "nodeAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceSchedulingNodeAffinity:InstanceSchedulingNodeAffinity"
                    },
                    "description": "Specifies node affinities or anti-affinities\nto determine which sole-tenant nodes your instances and managed instance\ngroups will use as host systems. Read more on sole-tenant node creation\n[here](https://cloud.google.com/compute/docs/nodes/create-nodes).\nStructure documented below.\n"
                },
                "onHostMaintenance": {
                    "type": "string",
                    "description": "Describes maintenance behavior for the\ninstance. Can be MIGRATE or TERMINATE, for more info, read\n[here](https://cloud.google.com/compute/docs/instances/setting-instance-scheduling-options).\n"
                },
                "onInstanceStopAction": {
                    "$ref": "#/types/gcp:compute/InstanceSchedulingOnInstanceStopAction:InstanceSchedulingOnInstanceStopAction",
                    "description": "Specifies the action to be performed when the instance is terminated using \u003cspan pulumi-lang-nodejs=\"`maxRunDuration`\" pulumi-lang-dotnet=\"`MaxRunDuration`\" pulumi-lang-go=\"`maxRunDuration`\" pulumi-lang-python=\"`max_run_duration`\" pulumi-lang-yaml=\"`maxRunDuration`\" pulumi-lang-java=\"`maxRunDuration`\" pulumi-lang-hcl=\"`max_run_duration`\"\u003e`maxRunDuration`\u003c/span\u003e and `STOP` \u003cspan pulumi-lang-nodejs=\"`instanceTerminationAction`\" pulumi-lang-dotnet=\"`InstanceTerminationAction`\" pulumi-lang-go=\"`instanceTerminationAction`\" pulumi-lang-python=\"`instance_termination_action`\" pulumi-lang-yaml=\"`instanceTerminationAction`\" pulumi-lang-java=\"`instanceTerminationAction`\" pulumi-lang-hcl=\"`instance_termination_action`\"\u003e`instanceTerminationAction`\u003c/span\u003e. Only support \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`discardLocalSsd`\" pulumi-lang-dotnet=\"`DiscardLocalSsd`\" pulumi-lang-go=\"`discardLocalSsd`\" pulumi-lang-python=\"`discard_local_ssd`\" pulumi-lang-yaml=\"`discardLocalSsd`\" pulumi-lang-java=\"`discardLocalSsd`\" pulumi-lang-hcl=\"`discard_local_ssd`\"\u003e`discardLocalSsd`\u003c/span\u003e at this point. Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "preemptible": {
                    "type": "boolean",
                    "description": "Specifies if the instance is preemptible.\nIf this field is set to true, then \u003cspan pulumi-lang-nodejs=\"`automaticRestart`\" pulumi-lang-dotnet=\"`AutomaticRestart`\" pulumi-lang-go=\"`automaticRestart`\" pulumi-lang-python=\"`automatic_restart`\" pulumi-lang-yaml=\"`automaticRestart`\" pulumi-lang-java=\"`automaticRestart`\" pulumi-lang-hcl=\"`automatic_restart`\"\u003e`automaticRestart`\u003c/span\u003e must be\nset to false.  Defaults to false.\n",
                    "willReplaceOnChanges": true
                },
                "preemptionNoticeDuration": {
                    "$ref": "#/types/gcp:compute/InstanceSchedulingPreemptionNoticeDuration:InstanceSchedulingPreemptionNoticeDuration",
                    "description": "Beta Specifies the Metadata Service preemption notice duration before the GCE ACPI G2 Soft Off signal is triggered for Spot VMs only. If not specified, there will be no wait before the G2 Soft Off signal is triggered. Structure is documented below.\n"
                },
                "provisioningModel": {
                    "type": "string",
                    "description": "Describe the type of preemptible VM. This field accepts the value `STANDARD` or `SPOT`. If the value is `STANDARD`, there will be no discount. If this   is set to `SPOT`,\n\u003cspan pulumi-lang-nodejs=\"`preemptible`\" pulumi-lang-dotnet=\"`Preemptible`\" pulumi-lang-go=\"`preemptible`\" pulumi-lang-python=\"`preemptible`\" pulumi-lang-yaml=\"`preemptible`\" pulumi-lang-java=\"`preemptible`\" pulumi-lang-hcl=\"`preemptible`\"\u003e`preemptible`\u003c/span\u003e should be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`automaticRestart`\" pulumi-lang-dotnet=\"`AutomaticRestart`\" pulumi-lang-go=\"`automaticRestart`\" pulumi-lang-python=\"`automatic_restart`\" pulumi-lang-yaml=\"`automaticRestart`\" pulumi-lang-java=\"`automaticRestart`\" pulumi-lang-hcl=\"`automatic_restart`\"\u003e`automaticRestart`\u003c/span\u003e should be\n\u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e. For more info about\n`SPOT`, read [here](https://cloud.google.com/compute/docs/instances/spot)\n",
                    "willReplaceOnChanges": true
                },
                "skipGuestOsShutdown": {
                    "type": "boolean",
                    "description": "Beta Boolean parameter. Default is false and there will be 120 seconds between GCE ACPI G2 Soft Off and ACPI G3 Mechanical Off for Standard VMs and 30 seconds for Spot VMs.\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Specifies the timestamp, when the instance will be terminated, in RFC3339 text format. If specified, the instance termination action will be performed at the termination time.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "onHostMaintenance",
                        "provisioningModel"
                    ]
                }
            }
        },
        "gcp:compute/InstanceSchedulingGracefulShutdown:InstanceSchedulingGracefulShutdown": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Opts-in for graceful shutdown.\n"
                },
                "maxDuration": {
                    "$ref": "#/types/gcp:compute/InstanceSchedulingGracefulShutdownMaxDuration:InstanceSchedulingGracefulShutdownMaxDuration",
                    "description": "The time allotted for the instance to gracefully shut down.\nIf the graceful shutdown isn't complete after this time, then the instance\ntransitions to the STOPPING state. Structure is documented below:\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:compute/InstanceSchedulingGracefulShutdownMaxDuration:InstanceSchedulingGracefulShutdownMaxDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nThe value must be between 1 and 3600, which is 3,600 seconds (one hour).`\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/InstanceSchedulingLocalSsdRecoveryTimeout:InstanceSchedulingLocalSsdRecoveryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to\n315,576,000,000 inclusive. Note: these bounds are computed from: 60\nsec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/InstanceSchedulingMaxRunDuration:InstanceSchedulingMaxRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to\n315,576,000,000 inclusive. Note: these bounds are computed from: 60\nsec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/InstanceSchedulingNodeAffinity:InstanceSchedulingNodeAffinity": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key for the node affinity label.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator. Can be `IN` for node-affinities\nor `NOT_IN` for anti-affinities.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The values for the node affinity label.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "operator",
                "values"
            ]
        },
        "gcp:compute/InstanceSchedulingOnInstanceStopAction:InstanceSchedulingOnInstanceStopAction": {
            "properties": {
                "discardLocalSsd": {
                    "type": "boolean",
                    "description": "Whether to discard local SSDs attached to the VM while terminating using \u003cspan pulumi-lang-nodejs=\"`maxRunDuration`\" pulumi-lang-dotnet=\"`MaxRunDuration`\" pulumi-lang-go=\"`maxRunDuration`\" pulumi-lang-python=\"`max_run_duration`\" pulumi-lang-yaml=\"`maxRunDuration`\" pulumi-lang-java=\"`maxRunDuration`\" pulumi-lang-hcl=\"`max_run_duration`\"\u003e`maxRunDuration`\u003c/span\u003e. Only supports \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e at this point.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceSchedulingPreemptionNoticeDuration:InstanceSchedulingPreemptionNoticeDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to\n315,576,000,000 inclusive. Note: these bounds are computed from: 60\nsec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/InstanceScratchDisk:InstanceScratchDisk": {
            "properties": {
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk is accessible under /dev/disk/by-id/\n"
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface to use for attaching this disk; either SCSI or NVME.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the disk in gigabytes. One of 375 or 3000.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "interface"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deviceName",
                        "interface"
                    ]
                }
            }
        },
        "gcp:compute/InstanceServiceAccount:InstanceServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "The service account e-mail address.\n**Note**: \u003cspan pulumi-lang-nodejs=\"`allowStoppingForUpdate`\" pulumi-lang-dotnet=\"`AllowStoppingForUpdate`\" pulumi-lang-go=\"`allowStoppingForUpdate`\" pulumi-lang-python=\"`allow_stopping_for_update`\" pulumi-lang-yaml=\"`allowStoppingForUpdate`\" pulumi-lang-java=\"`allowStoppingForUpdate`\" pulumi-lang-hcl=\"`allow_stopping_for_update`\"\u003e`allowStoppingForUpdate`\u003c/span\u003e must be set to true or your instance must have a \u003cspan pulumi-lang-nodejs=\"`desiredStatus`\" pulumi-lang-dotnet=\"`DesiredStatus`\" pulumi-lang-go=\"`desiredStatus`\" pulumi-lang-python=\"`desired_status`\" pulumi-lang-yaml=\"`desiredStatus`\" pulumi-lang-java=\"`desiredStatus`\" pulumi-lang-hcl=\"`desired_status`\"\u003e`desiredStatus`\u003c/span\u003e of `TERMINATED` in order to update this field.\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service scopes. Both OAuth2 URLs and gcloud\nshort names are supported. To allow full access to all Cloud APIs, use the\n`cloud-platform` scope. See a complete list of scopes [here](https://cloud.google.com/sdk/gcloud/reference/alpha/compute/instances/set-scopes#--scopes).\n**Note**: \u003cspan pulumi-lang-nodejs=\"`allowStoppingForUpdate`\" pulumi-lang-dotnet=\"`AllowStoppingForUpdate`\" pulumi-lang-go=\"`allowStoppingForUpdate`\" pulumi-lang-python=\"`allow_stopping_for_update`\" pulumi-lang-yaml=\"`allowStoppingForUpdate`\" pulumi-lang-java=\"`allowStoppingForUpdate`\" pulumi-lang-hcl=\"`allow_stopping_for_update`\"\u003e`allowStoppingForUpdate`\u003c/span\u003e must be set to true or your instance must have a \u003cspan pulumi-lang-nodejs=\"`desiredStatus`\" pulumi-lang-dotnet=\"`DesiredStatus`\" pulumi-lang-go=\"`desiredStatus`\" pulumi-lang-python=\"`desired_status`\" pulumi-lang-yaml=\"`desiredStatus`\" pulumi-lang-java=\"`desiredStatus`\" pulumi-lang-hcl=\"`desired_status`\"\u003e`desiredStatus`\u003c/span\u003e of `TERMINATED` in order to update this field.\n"
                }
            },
            "type": "object",
            "required": [
                "scopes"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "email",
                        "scopes"
                    ]
                }
            }
        },
        "gcp:compute/InstanceSettingsMetadata:InstanceSettingsMetadata": {
            "properties": {
                "items": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A metadata key/value items map. The total size of all keys and values must be less than 512KB\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceShieldedInstanceConfig:InstanceShieldedInstanceConfig": {
            "properties": {
                "enableIntegrityMonitoring": {
                    "type": "boolean",
                    "description": "- Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.\n**Note**: \u003cspan pulumi-lang-nodejs=\"`allowStoppingForUpdate`\" pulumi-lang-dotnet=\"`AllowStoppingForUpdate`\" pulumi-lang-go=\"`allowStoppingForUpdate`\" pulumi-lang-python=\"`allow_stopping_for_update`\" pulumi-lang-yaml=\"`allowStoppingForUpdate`\" pulumi-lang-java=\"`allowStoppingForUpdate`\" pulumi-lang-hcl=\"`allow_stopping_for_update`\"\u003e`allowStoppingForUpdate`\u003c/span\u003e must be set to true or your instance must have a \u003cspan pulumi-lang-nodejs=\"`desiredStatus`\" pulumi-lang-dotnet=\"`DesiredStatus`\" pulumi-lang-go=\"`desiredStatus`\" pulumi-lang-python=\"`desired_status`\" pulumi-lang-yaml=\"`desiredStatus`\" pulumi-lang-java=\"`desiredStatus`\" pulumi-lang-hcl=\"`desired_status`\"\u003e`desiredStatus`\u003c/span\u003e of `TERMINATED` in order to update this field.\n"
                },
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "- Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.\n**Note**: \u003cspan pulumi-lang-nodejs=\"`allowStoppingForUpdate`\" pulumi-lang-dotnet=\"`AllowStoppingForUpdate`\" pulumi-lang-go=\"`allowStoppingForUpdate`\" pulumi-lang-python=\"`allow_stopping_for_update`\" pulumi-lang-yaml=\"`allowStoppingForUpdate`\" pulumi-lang-java=\"`allowStoppingForUpdate`\" pulumi-lang-hcl=\"`allow_stopping_for_update`\"\u003e`allowStoppingForUpdate`\u003c/span\u003e must be set to true or your instance must have a \u003cspan pulumi-lang-nodejs=\"`desiredStatus`\" pulumi-lang-dotnet=\"`DesiredStatus`\" pulumi-lang-go=\"`desiredStatus`\" pulumi-lang-python=\"`desired_status`\" pulumi-lang-yaml=\"`desiredStatus`\" pulumi-lang-java=\"`desiredStatus`\" pulumi-lang-hcl=\"`desired_status`\"\u003e`desiredStatus`\u003c/span\u003e of `TERMINATED` in order to update this field.\n"
                },
                "enableVtpm": {
                    "type": "boolean",
                    "description": "- Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.\n**Note**: \u003cspan pulumi-lang-nodejs=\"`allowStoppingForUpdate`\" pulumi-lang-dotnet=\"`AllowStoppingForUpdate`\" pulumi-lang-go=\"`allowStoppingForUpdate`\" pulumi-lang-python=\"`allow_stopping_for_update`\" pulumi-lang-yaml=\"`allowStoppingForUpdate`\" pulumi-lang-java=\"`allowStoppingForUpdate`\" pulumi-lang-hcl=\"`allow_stopping_for_update`\"\u003e`allowStoppingForUpdate`\u003c/span\u003e must be set to true or your instance must have a \u003cspan pulumi-lang-nodejs=\"`desiredStatus`\" pulumi-lang-dotnet=\"`DesiredStatus`\" pulumi-lang-go=\"`desiredStatus`\" pulumi-lang-python=\"`desired_status`\" pulumi-lang-yaml=\"`desiredStatus`\" pulumi-lang-java=\"`desiredStatus`\" pulumi-lang-hcl=\"`desired_status`\"\u003e`desiredStatus`\u003c/span\u003e of `TERMINATED` in order to update this field.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceTemplateAdvancedMachineFeatures:InstanceTemplateAdvancedMachineFeatures": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have nested virtualization enabled. Defaults to false.\n",
                    "willReplaceOnChanges": true
                },
                "enableUefiNetworking": {
                    "type": "boolean",
                    "description": "Whether to enable UEFI networking for instance creation.\n",
                    "willReplaceOnChanges": true
                },
                "performanceMonitoringUnit": {
                    "type": "string",
                    "description": "[The PMU](https://cloud.google.com/compute/docs/pmu-overview) is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are `STANDARD`, `ENHANCED`, and `ARCHITECTURAL`.\n",
                    "willReplaceOnChanges": true
                },
                "threadsPerCore": {
                    "type": "integer",
                    "description": "The number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.\n",
                    "willReplaceOnChanges": true
                },
                "turboMode": {
                    "type": "string",
                    "description": "Turbo frequency mode to use for the instance. Supported modes are currently either `ALL_CORE_MAX` or unset (default).\n"
                },
                "visibleCoreCount": {
                    "type": "integer",
                    "description": "The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceTemplateConfidentialInstanceConfig:InstanceTemplateConfidentialInstanceConfig": {
            "properties": {
                "confidentialInstanceType": {
                    "type": "string",
                    "description": "Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: `SEV`, `SEV_SNP`, `TDX`. \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e can be set to MIGRATE if \u003cspan pulumi-lang-nodejs=\"`confidentialInstanceType`\" pulumi-lang-dotnet=\"`ConfidentialInstanceType`\" pulumi-lang-go=\"`confidentialInstanceType`\" pulumi-lang-python=\"`confidential_instance_type`\" pulumi-lang-yaml=\"`confidentialInstanceType`\" pulumi-lang-java=\"`confidentialInstanceType`\" pulumi-lang-hcl=\"`confidential_instance_type`\"\u003e`confidentialInstanceType`\u003c/span\u003e is set to `SEV` and \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e is set to `\"AMD Milan\"` or `\"AMD Genoa\"`. Otherwise, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e has to be set to `\"AMD Milan\"` or this will fail to create the VM.\n",
                    "willReplaceOnChanges": true
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e can be set to MIGRATE if \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e is set to `\"AMD Milan\"` or `\"AMD Genoa\"`. Otherwise, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e has to be set to TERMINATE or this will fail to create the VM.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceTemplateDisk:InstanceTemplateDisk": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": "The architecture of the attached disk. Valid values are `ARM64` or \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\" pulumi-lang-hcl=\"`x86_64`\"\u003e`x8664`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "autoDelete": {
                    "type": "boolean",
                    "description": "Whether or not the disk should be auto-deleted.\nThis defaults to true.\n",
                    "willReplaceOnChanges": true
                },
                "boot": {
                    "type": "boolean",
                    "description": "Indicates that this is a boot disk.\n",
                    "willReplaceOnChanges": true
                },
                "deviceName": {
                    "type": "string",
                    "description": "A unique device name that is reflected into the\n/dev/  tree of a Linux operating system running within the instance. If not\nspecified, the server chooses a default device name to apply to this disk.\n",
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateDiskDiskEncryptionKey:InstanceTemplateDiskDiskEncryptionKey",
                    "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.\n\nIf you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.\n\nIf you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "diskName": {
                    "type": "string",
                    "description": "Name of the disk. When not provided, this defaults\nto the name of the instance.\n",
                    "willReplaceOnChanges": true
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes. If not\nspecified, it will inherit the size of its base image. For SCRATCH disks,\nthe size must be exactly 375GB.\n",
                    "willReplaceOnChanges": true
                },
                "diskType": {
                    "type": "string",
                    "description": "The GCE disk type. Such as `\"pd-ssd\"`, `\"local-ssd\"`,\n`\"pd-balanced\"` or `\"pd-standard\"`, `\"hyperdisk-balanced\"`, `\"hyperdisk-throughput\"` or `\"hyperdisk-extreme\"`.\n",
                    "willReplaceOnChanges": true
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options.\n",
                    "willReplaceOnChanges": true
                },
                "interface": {
                    "type": "string",
                    "description": "Specifies the disk interface to use for attaching this disk,\nwhich is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI\nand the request will fail if you attempt to attach a persistent disk in any other format\nthan SCSI. Local SSDs can use either NVME or SCSI.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of ket/value label pairs to assign to disk created from\nthis template\n",
                    "willReplaceOnChanges": true
                },
                "mode": {
                    "type": "string",
                    "description": "The mode in which to attach this disk, either READ_WRITE\nor READ_ONLY. If you are attaching or creating a boot disk, this must\nread-write mode.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. For more details, see the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk) or the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks) depending on the selected disk_type.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).\n",
                    "willReplaceOnChanges": true
                },
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of key/value resource manager tag pairs to bind to this disk. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                },
                "resourcePolicies": {
                    "type": "string",
                    "description": "- A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.\n",
                    "willReplaceOnChanges": true
                },
                "source": {
                    "type": "string",
                    "description": "The name (**not self_link**)\nof the disk (such as those managed by \u003cspan pulumi-lang-nodejs=\"`gcp.compute.Disk`\" pulumi-lang-dotnet=\"`gcp.compute.Disk`\" pulumi-lang-go=\"`compute.Disk`\" pulumi-lang-python=\"`compute.Disk`\" pulumi-lang-yaml=\"`gcp.compute.Disk`\" pulumi-lang-java=\"`gcp.compute.Disk`\" pulumi-lang-hcl=\"`google_compute_disk`\"\u003e`gcp.compute.Disk`\u003c/span\u003e) to attach.\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceImage`\" pulumi-lang-dotnet=\"`SourceImage`\" pulumi-lang-go=\"`sourceImage`\" pulumi-lang-python=\"`source_image`\" pulumi-lang-yaml=\"`sourceImage`\" pulumi-lang-java=\"`sourceImage`\" pulumi-lang-hcl=\"`source_image`\"\u003e`sourceImage`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`sourceSnapshot`\" pulumi-lang-dotnet=\"`SourceSnapshot`\" pulumi-lang-go=\"`sourceSnapshot`\" pulumi-lang-python=\"`source_snapshot`\" pulumi-lang-yaml=\"`sourceSnapshot`\" pulumi-lang-java=\"`sourceSnapshot`\" pulumi-lang-hcl=\"`source_snapshot`\"\u003e`sourceSnapshot`\u003c/span\u003e is **required** in a disk block unless the disk type is `local-ssd`. Check the API [docs](https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates/insert) for details.\n",
                    "willReplaceOnChanges": true
                },
                "sourceImage": {
                    "type": "string",
                    "description": "The image from which to\ninitialize this disk. This can be one of: the image's \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e,\n`projects/{project}/global/images/{image}`,\n`projects/{project}/global/images/family/{family}`, `global/images/{image}`,\n`global/images/family/{family}`, `family/{family}`, `{project}/{family}`,\n`{project}/{image}`, `{family}`, or `{image}`.\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceImage`\" pulumi-lang-dotnet=\"`SourceImage`\" pulumi-lang-go=\"`sourceImage`\" pulumi-lang-python=\"`source_image`\" pulumi-lang-yaml=\"`sourceImage`\" pulumi-lang-java=\"`sourceImage`\" pulumi-lang-hcl=\"`source_image`\"\u003e`sourceImage`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`sourceSnapshot`\" pulumi-lang-dotnet=\"`SourceSnapshot`\" pulumi-lang-go=\"`sourceSnapshot`\" pulumi-lang-python=\"`source_snapshot`\" pulumi-lang-yaml=\"`sourceSnapshot`\" pulumi-lang-java=\"`sourceSnapshot`\" pulumi-lang-hcl=\"`source_snapshot`\"\u003e`sourceSnapshot`\u003c/span\u003e is **required** in a disk block unless the disk type is `local-ssd`. Check the API [docs](https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates/insert) for details.\n",
                    "willReplaceOnChanges": true
                },
                "sourceImageEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateDiskSourceImageEncryptionKey:InstanceTemplateDiskSourceImageEncryptionKey",
                    "description": "The customer-supplied encryption\nkey of the source image. Required if the source image is protected by a\ncustomer-supplied encryption key.\n\nInstance templates do not store customer-supplied encryption keys, so you\ncannot create disks for instances in a managed instance group if the source\nimages are encrypted with your own keys. Structure\ndocumented below.\n",
                    "willReplaceOnChanges": true
                },
                "sourceSnapshot": {
                    "type": "string",
                    "description": "The source snapshot to create this disk.\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceImage`\" pulumi-lang-dotnet=\"`SourceImage`\" pulumi-lang-go=\"`sourceImage`\" pulumi-lang-python=\"`source_image`\" pulumi-lang-yaml=\"`sourceImage`\" pulumi-lang-java=\"`sourceImage`\" pulumi-lang-hcl=\"`source_image`\"\u003e`sourceImage`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`sourceSnapshot`\" pulumi-lang-dotnet=\"`SourceSnapshot`\" pulumi-lang-go=\"`sourceSnapshot`\" pulumi-lang-python=\"`source_snapshot`\" pulumi-lang-yaml=\"`sourceSnapshot`\" pulumi-lang-java=\"`sourceSnapshot`\" pulumi-lang-hcl=\"`source_snapshot`\"\u003e`sourceSnapshot`\u003c/span\u003e is **required** in a disk block unless the disk type is `local-ssd`. Check the API [docs](https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates/insert) for details.\n",
                    "willReplaceOnChanges": true
                },
                "sourceSnapshotEncryptionKey": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateDiskSourceSnapshotEncryptionKey:InstanceTemplateDiskSourceSnapshotEncryptionKey",
                    "description": "The customer-supplied encryption\nkey of the source snapshot. Structure\ndocumented below.\n",
                    "willReplaceOnChanges": true
                },
                "storagePool": {
                    "type": "string",
                    "description": "The URL of the storage pool in which the new disk is created.\nFor example:\n* `https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/storagePools/{storagePool}`\n* `/projects/{project}/zones/{zone}/storagePools/{storagePool}`\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of GCE disk, can be either `\"SCRATCH\"` or\n`\"PERSISTENT\"`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "architecture",
                        "boot",
                        "deviceName",
                        "diskSizeGb",
                        "diskType",
                        "interface",
                        "mode",
                        "provisionedIops",
                        "provisionedThroughput",
                        "sourceImage",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/InstanceTemplateDiskDiskEncryptionKey:InstanceTemplateDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the\nencryption request for the given KMS key. If absent, the Compute Engine\ndefault service account is used.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceTemplateDiskSourceImageEncryptionKey:InstanceTemplateDiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is\nstored in Google Cloud KMS. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the\nencryption request for the given KMS key. If absent, the Compute Engine\ndefault service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "A 256-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption),\nencoded in [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nto decrypt the given image. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) to decrypt the given image. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceTemplateDiskSourceSnapshotEncryptionKey:InstanceTemplateDiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is\nstored in Google Cloud KMS. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the\nencryption request for the given KMS key. If absent, the Compute Engine\ndefault service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "A 256-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption),\nencoded in [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nto decrypt this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) to decrypt this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceTemplateGuestAccelerator:InstanceTemplateGuestAccelerator": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource to expose to this instance. E.g. `nvidia-tesla-k80`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "count",
                "type"
            ]
        },
        "gcp:compute/InstanceTemplateIamBindingCondition:InstanceTemplateIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/InstanceTemplateIamMemberCondition:InstanceTemplateIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/InstanceTemplateNetworkInterface:InstanceTemplateNetworkInterface": {
            "properties": {
                "accessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceTemplateNetworkInterfaceAccessConfig:InstanceTemplateNetworkInterfaceAccessConfig"
                    },
                    "description": "Access configurations, i.e. IPs via which this\ninstance can be accessed via the Internet. Omit to ensure that the instance\nis not accessible from the Internet (this means that ssh provisioners will\nnot work unless you can send traffic to the instance's\nnetwork (e.g. via tunnel or because it is running on another cloud instance\non that network). This block can be specified once per \u003cspan pulumi-lang-nodejs=\"`networkInterface`\" pulumi-lang-dotnet=\"`NetworkInterface`\" pulumi-lang-go=\"`networkInterface`\" pulumi-lang-python=\"`network_interface`\" pulumi-lang-yaml=\"`networkInterface`\" pulumi-lang-java=\"`networkInterface`\" pulumi-lang-hcl=\"`network_interface`\"\u003e`networkInterface`\u003c/span\u003e. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "aliasIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceTemplateNetworkInterfaceAliasIpRange:InstanceTemplateNetworkInterfaceAliasIpRange"
                    },
                    "description": "An\narray of alias IP ranges for this network interface. Can only be specified for network\ninterfaces on subnet-mode networks. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "aliasIpv6Ranges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceTemplateNetworkInterfaceAliasIpv6Range:InstanceTemplateNetworkInterfaceAliasIpv6Range"
                    },
                    "description": "[Beta] An\narray of alias IPv6 ranges for this network interface. Can only be specified for network\ninterfaces on subnet-mode networks. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "igmpQuery": {
                    "type": "string",
                    "description": "Indicates whether igmp query is enabled on the network interface or not. If enabled, also indicates the version of IGMP supported.\n"
                },
                "internalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "The prefix length of the primary internal IPv6 range.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6AccessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceTemplateNetworkInterfaceIpv6AccessConfig:InstanceTemplateNetworkInterfaceIpv6AccessConfig"
                    },
                    "description": "An array of IPv6 access configurations for this interface.\nCurrently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig\nspecified, then this instance will have no external IPv6 Internet access. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance template. If you leave\nthis blank, the provider will auto-generate a unique name.\n",
                    "willReplaceOnChanges": true
                },
                "network": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the network to attach this interface to.\nUse \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\" pulumi-lang-hcl=\"`network`\"\u003e`network`\u003c/span\u003e attribute for Legacy or Auto subnetted networks and\n\u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e for custom subnetted networks.\n",
                    "willReplaceOnChanges": true
                },
                "networkAttachment": {
                    "type": "string",
                    "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.\n",
                    "willReplaceOnChanges": true
                },
                "networkIp": {
                    "type": "string",
                    "description": "The private IP address to assign to the instance. If\nempty, the address will be automatically assigned.\n",
                    "willReplaceOnChanges": true
                },
                "nicType": {
                    "type": "string",
                    "description": "The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET, MRDMA, IRDMA, IDPF.\n",
                    "willReplaceOnChanges": true
                },
                "parentNicName": {
                    "type": "string",
                    "description": "Name of the parent network interface of a dynamic network interface.\n"
                },
                "queueCount": {
                    "type": "integer",
                    "description": "The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.\n",
                    "willReplaceOnChanges": true
                },
                "stackType": {
                    "type": "string",
                    "description": "The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6, IPV6_ONLY or IPV4_ONLY. If not specified, IPV4_ONLY will be used.\n",
                    "willReplaceOnChanges": true
                },
                "subnetwork": {
                    "type": "string",
                    "description": "the name of the subnetwork to attach this interface\nto. The subnetwork must exist in the same \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\" pulumi-lang-hcl=\"`region`\"\u003e`region`\u003c/span\u003e this instance will be\ncreated in. Either \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\" pulumi-lang-hcl=\"`network`\"\u003e`network`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e must be provided.\n",
                    "willReplaceOnChanges": true
                },
                "subnetworkProject": {
                    "type": "string",
                    "description": "The ID of the project in which the subnetwork belongs.\nIf it is not provided, the provider project is used.\n",
                    "willReplaceOnChanges": true
                },
                "vlan": {
                    "type": "integer",
                    "description": "VLAN tag of a dynamic network interface, must be an integer in the range from 2 to 255 inclusively.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "igmpQuery",
                        "internalIpv6PrefixLength",
                        "ipv6AccessType",
                        "ipv6Address",
                        "name",
                        "network",
                        "networkAttachment",
                        "parentNicName",
                        "stackType",
                        "subnetwork",
                        "subnetworkProject"
                    ]
                }
            }
        },
        "gcp:compute/InstanceTemplateNetworkInterfaceAccessConfig:InstanceTemplateNetworkInterfaceAccessConfig": {
            "properties": {
                "natIp": {
                    "type": "string",
                    "description": "The IP address that will be 1:1 mapped to the instance's\nnetwork ip. If not given, one will be generated.\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "The service-level to be provided for IPv6 traffic when the\nsubnet has an external subnet. Only PREMIUM and STANDARD tier is valid for IPv6.\n",
                    "willReplaceOnChanges": true
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "natIp",
                        "networkTier",
                        "publicPtrDomainName"
                    ]
                }
            }
        },
        "gcp:compute/InstanceTemplateNetworkInterfaceAliasIpRange:InstanceTemplateNetworkInterfaceAliasIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range\nmust belong to the specified subnetwork and cannot contain IP addresses reserved by\nsystem or used by other network interfaces. At the time of writing only a\nnetmask (e.g. /24) may be supplied, with a CIDR format resulting in an API\nerror.\n",
                    "willReplaceOnChanges": true
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying\nthe secondary range from which to allocate the IP CIDR range for this alias IP\nrange. If left unspecified, the primary range of the subnetwork will be used.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ]
        },
        "gcp:compute/InstanceTemplateNetworkInterfaceAliasIpv6Range:InstanceTemplateNetworkInterfaceAliasIpv6Range": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IPv6 range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /96) may be supplied, with a CIDR format resulting in an API error.\n",
                    "willReplaceOnChanges": true
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IPv6 range. If left unspecified, the primary range of the subnetwork will be used.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ]
        },
        "gcp:compute/InstanceTemplateNetworkInterfaceIpv6AccessConfig:InstanceTemplateNetworkInterfaceIpv6AccessConfig": {
            "properties": {
                "externalIpv6": {
                    "type": "string",
                    "description": "The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6PrefixLength": {
                    "type": "string",
                    "description": "The prefix length of the external IPv6 range.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance template. If you leave\nthis blank, the provider will auto-generate a unique name.\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6\n",
                    "willReplaceOnChanges": true
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The domain name to be used when creating DNSv6 records for the external IPv6 ranges.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "networkTier"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "externalIpv6",
                        "externalIpv6PrefixLength",
                        "name",
                        "networkTier",
                        "publicPtrDomainName"
                    ]
                }
            }
        },
        "gcp:compute/InstanceTemplateNetworkPerformanceConfig:InstanceTemplateNetworkPerformanceConfig": {
            "properties": {
                "totalEgressBandwidthTier": {
                    "type": "string",
                    "description": "The egress bandwidth tier to enable. Possible values: TIER_1, DEFAULT\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "totalEgressBandwidthTier"
            ]
        },
        "gcp:compute/InstanceTemplateReservationAffinity:InstanceTemplateReservationAffinity": {
            "properties": {
                "specificReservation": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateReservationAffinitySpecificReservation:InstanceTemplateReservationAffinitySpecificReservation",
                    "description": "Specifies the label selector for the reservation to use..\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of reservation from which this instance can consume resources.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/InstanceTemplateReservationAffinitySpecificReservation:InstanceTemplateReservationAffinitySpecificReservation": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.\n",
                    "willReplaceOnChanges": true
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "gcp:compute/InstanceTemplateScheduling:InstanceTemplateScheduling": {
            "properties": {
                "automaticRestart": {
                    "type": "boolean",
                    "description": "Specifies whether the instance should be\nautomatically restarted if it is terminated by Compute Engine (not\nterminated by a user). This defaults to true.\n",
                    "willReplaceOnChanges": true
                },
                "availabilityDomain": {
                    "type": "integer",
                    "description": "Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.\n",
                    "willReplaceOnChanges": true
                },
                "gracefulShutdown": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateSchedulingGracefulShutdown:InstanceTemplateSchedulingGracefulShutdown",
                    "description": "Beta Settings for the instance to perform a graceful shutdown. Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "hostErrorTimeoutSeconds": {
                    "type": "integer",
                    "description": "Beta Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n",
                    "willReplaceOnChanges": true
                },
                "instanceTerminationAction": {
                    "type": "string",
                    "description": "Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`.  Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot)\n",
                    "willReplaceOnChanges": true
                },
                "localSsdRecoveryTimeouts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceTemplateSchedulingLocalSsdRecoveryTimeout:InstanceTemplateSchedulingLocalSsdRecoveryTimeout"
                    },
                    "description": "(../guides/provider_versions.html.markdown) Specifies the maximum amount of time a Local Ssd Vm should wait while recovery of the Local Ssd state is attempted. Its value should be in between 0 and 168 hours with hour granularity and the default value being 1 hour. Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Beta Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.\n",
                    "willReplaceOnChanges": true
                },
                "maxRunDuration": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateSchedulingMaxRunDuration:InstanceTemplateSchedulingMaxRunDuration",
                    "description": "The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in \u003cspan pulumi-lang-nodejs=\"`instanceTerminationAction`\" pulumi-lang-dotnet=\"`InstanceTerminationAction`\" pulumi-lang-go=\"`instanceTerminationAction`\" pulumi-lang-python=\"`instance_termination_action`\" pulumi-lang-yaml=\"`instanceTerminationAction`\" pulumi-lang-java=\"`instanceTerminationAction`\" pulumi-lang-hcl=\"`instance_termination_action`\"\u003e`instanceTerminationAction`\u003c/span\u003e. Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "minNodeCpus": {
                    "type": "integer",
                    "description": "Minimum number of cpus for the instance.\n",
                    "willReplaceOnChanges": true
                },
                "nodeAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InstanceTemplateSchedulingNodeAffinity:InstanceTemplateSchedulingNodeAffinity"
                    },
                    "description": "Specifies node affinities or anti-affinities\nto determine which sole-tenant nodes your instances and managed instance\ngroups will use as host systems. Read more on sole-tenant node creation\n[here](https://cloud.google.com/compute/docs/nodes/create-nodes).\nStructure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "onHostMaintenance": {
                    "type": "string",
                    "description": "Defines the maintenance behavior for this\ninstance.\n",
                    "willReplaceOnChanges": true
                },
                "onInstanceStopAction": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateSchedulingOnInstanceStopAction:InstanceTemplateSchedulingOnInstanceStopAction",
                    "description": "Specifies the action to be performed when the instance is terminated using \u003cspan pulumi-lang-nodejs=\"`maxRunDuration`\" pulumi-lang-dotnet=\"`MaxRunDuration`\" pulumi-lang-go=\"`maxRunDuration`\" pulumi-lang-python=\"`max_run_duration`\" pulumi-lang-yaml=\"`maxRunDuration`\" pulumi-lang-java=\"`maxRunDuration`\" pulumi-lang-hcl=\"`max_run_duration`\"\u003e`maxRunDuration`\u003c/span\u003e and `STOP` \u003cspan pulumi-lang-nodejs=\"`instanceTerminationAction`\" pulumi-lang-dotnet=\"`InstanceTerminationAction`\" pulumi-lang-go=\"`instanceTerminationAction`\" pulumi-lang-python=\"`instance_termination_action`\" pulumi-lang-yaml=\"`instanceTerminationAction`\" pulumi-lang-java=\"`instanceTerminationAction`\" pulumi-lang-hcl=\"`instance_termination_action`\"\u003e`instanceTerminationAction`\u003c/span\u003e. Only support \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e \u003cspan pulumi-lang-nodejs=\"`discardLocalSsd`\" pulumi-lang-dotnet=\"`DiscardLocalSsd`\" pulumi-lang-go=\"`discardLocalSsd`\" pulumi-lang-python=\"`discard_local_ssd`\" pulumi-lang-yaml=\"`discardLocalSsd`\" pulumi-lang-java=\"`discardLocalSsd`\" pulumi-lang-hcl=\"`discard_local_ssd`\"\u003e`discardLocalSsd`\u003c/span\u003e at this point. Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "preemptible": {
                    "type": "boolean",
                    "description": "Allows instance to be preempted. This defaults to\nfalse. Read more on this\n[here](https://cloud.google.com/compute/docs/instances/preemptible).\n",
                    "willReplaceOnChanges": true
                },
                "preemptionNoticeDuration": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateSchedulingPreemptionNoticeDuration:InstanceTemplateSchedulingPreemptionNoticeDuration",
                    "description": "Beta Specifies the Metadata Service preemption notice duration before the GCE ACPI G2 Soft Off signal is triggered for Spot VMs only. If not specified, there will be no wait before the G2 Soft Off signal is triggered. Structure is documented below.\n"
                },
                "provisioningModel": {
                    "type": "string",
                    "description": "Describe the type of preemptible VM. This field accepts the value `STANDARD` or `SPOT`. If the value is `STANDARD`, there will be no discount. If this   is set to `SPOT`,\n\u003cspan pulumi-lang-nodejs=\"`preemptible`\" pulumi-lang-dotnet=\"`Preemptible`\" pulumi-lang-go=\"`preemptible`\" pulumi-lang-python=\"`preemptible`\" pulumi-lang-yaml=\"`preemptible`\" pulumi-lang-java=\"`preemptible`\" pulumi-lang-hcl=\"`preemptible`\"\u003e`preemptible`\u003c/span\u003e should be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`automaticRestart`\" pulumi-lang-dotnet=\"`AutomaticRestart`\" pulumi-lang-go=\"`automaticRestart`\" pulumi-lang-python=\"`automatic_restart`\" pulumi-lang-yaml=\"`automaticRestart`\" pulumi-lang-java=\"`automaticRestart`\" pulumi-lang-hcl=\"`automatic_restart`\"\u003e`automaticRestart`\u003c/span\u003e should be\n\u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e. For more info about\n`SPOT`, read [here](https://cloud.google.com/compute/docs/instances/spot)\n",
                    "willReplaceOnChanges": true
                },
                "skipGuestOsShutdown": {
                    "type": "boolean",
                    "description": "Beta Boolean parameter. Default is false and there will be 120 seconds between GCE ACPI G2 Soft Off and ACPI G3 Mechanical Off for Standard VMs and 30 seconds for Spot VMs.\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Specifies the timestamp, when the instance will be terminated, in RFC3339 text format. If specified, the instance termination action will be performed at the termination time.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "onHostMaintenance",
                        "provisioningModel"
                    ]
                }
            }
        },
        "gcp:compute/InstanceTemplateSchedulingGracefulShutdown:InstanceTemplateSchedulingGracefulShutdown": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Opts-in for graceful shutdown.\n",
                    "willReplaceOnChanges": true
                },
                "maxDuration": {
                    "$ref": "#/types/gcp:compute/InstanceTemplateSchedulingGracefulShutdownMaxDuration:InstanceTemplateSchedulingGracefulShutdownMaxDuration",
                    "description": "The time allotted for the instance to gracefully shut down.\nIf the graceful shutdown isn't complete after this time, then the instance\ntransitions to the STOPPING state. Structure is documented below:\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:compute/InstanceTemplateSchedulingGracefulShutdownMaxDuration:InstanceTemplateSchedulingGracefulShutdownMaxDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nThe value must be between 1 and 3600, which is 3,600 seconds (one hour).`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/InstanceTemplateSchedulingLocalSsdRecoveryTimeout:InstanceTemplateSchedulingLocalSsdRecoveryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to\n315,576,000,000 inclusive. Note: these bounds are computed from: 60\nsec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/InstanceTemplateSchedulingMaxRunDuration:InstanceTemplateSchedulingMaxRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to\n315,576,000,000 inclusive. Note: these bounds are computed from: 60\nsec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/InstanceTemplateSchedulingNodeAffinity:InstanceTemplateSchedulingNodeAffinity": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key for the node affinity label.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator. Can be `IN` for node-affinities\nor `NOT_IN` for anti-affinities.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "operator",
                "values"
            ]
        },
        "gcp:compute/InstanceTemplateSchedulingOnInstanceStopAction:InstanceTemplateSchedulingOnInstanceStopAction": {
            "properties": {
                "discardLocalSsd": {
                    "type": "boolean",
                    "description": "Whether to discard local SSDs attached to the VM while terminating using \u003cspan pulumi-lang-nodejs=\"`maxRunDuration`\" pulumi-lang-dotnet=\"`MaxRunDuration`\" pulumi-lang-go=\"`maxRunDuration`\" pulumi-lang-python=\"`max_run_duration`\" pulumi-lang-yaml=\"`maxRunDuration`\" pulumi-lang-java=\"`maxRunDuration`\" pulumi-lang-hcl=\"`max_run_duration`\"\u003e`maxRunDuration`\u003c/span\u003e. Only supports \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e at this point.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstanceTemplateSchedulingPreemptionNoticeDuration:InstanceTemplateSchedulingPreemptionNoticeDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to\n315,576,000,000 inclusive. Note: these bounds are computed from: 60\nsec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/InstanceTemplateServiceAccount:InstanceTemplateServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "The service account e-mail address. If not given, the\ndefault Google Compute Engine service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service scopes. Both OAuth2 URLs and gcloud\nshort names are supported. To allow full access to all Cloud APIs, use the\n`cloud-platform` scope. See a complete list of scopes [here](https://cloud.google.com/sdk/gcloud/reference/alpha/compute/instances/set-scopes#--scopes).\n\nThe [service accounts documentation](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam)\nexplains that access scopes are the legacy method of specifying permissions for your instance.\nTo follow best practices you should create a dedicated service account with the minimum permissions the VM requires.\nTo use a dedicated service account this field should be configured as a list containing the `cloud-platform` scope.\nSee [Authenticate workloads using service accounts best practices](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#best_practices)\nand [Best practices for using service accounts](https://cloud.google.com/iam/docs/best-practices-service-accounts#single-purpose).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "scopes"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "email",
                        "scopes"
                    ]
                }
            }
        },
        "gcp:compute/InstanceTemplateShieldedInstanceConfig:InstanceTemplateShieldedInstanceConfig": {
            "properties": {
                "enableIntegrityMonitoring": {
                    "type": "boolean",
                    "description": "- Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.\n",
                    "willReplaceOnChanges": true
                },
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "- Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.\n",
                    "willReplaceOnChanges": true
                },
                "enableVtpm": {
                    "type": "boolean",
                    "description": "- Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InstantSnapshotIamBindingCondition:InstantSnapshotIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/InstantSnapshotIamMemberCondition:InstantSnapshotIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/InstantSnapshotParams:InstantSnapshotParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the instant snapshot. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectApplicationAwareInterconnect:InterconnectApplicationAwareInterconnect": {
            "properties": {
                "bandwidthPercentagePolicy": {
                    "$ref": "#/types/gcp:compute/InterconnectApplicationAwareInterconnectBandwidthPercentagePolicy:InterconnectApplicationAwareInterconnectBandwidthPercentagePolicy",
                    "description": "(Optional, Beta)\nBandwidth Percentage policy allows you to have granular control over how your Interconnect\nbandwidth is utilized among your workloads mapping to different traffic classes.\nStructure is documented below.\n"
                },
                "profileDescription": {
                    "type": "string",
                    "description": "(Optional, Beta)\nA description for the AAI profile on this interconnect.\n"
                },
                "shapeAveragePercentages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectApplicationAwareInterconnectShapeAveragePercentage:InterconnectApplicationAwareInterconnectShapeAveragePercentage"
                    },
                    "description": "(Optional, Beta)\nOptional field to specify a list of shape average percentages to be\napplied in conjunction with StrictPriorityPolicy or BandwidthPercentagePolicy\nStructure is documented below.\n"
                },
                "strictPriorityPolicy": {
                    "$ref": "#/types/gcp:compute/InterconnectApplicationAwareInterconnectStrictPriorityPolicy:InterconnectApplicationAwareInterconnectStrictPriorityPolicy",
                    "description": "(Optional, Beta)\nSpecify configuration for StrictPriorityPolicy.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectApplicationAwareInterconnectBandwidthPercentagePolicy:InterconnectApplicationAwareInterconnectBandwidthPercentagePolicy": {
            "properties": {
                "bandwidthPercentages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectApplicationAwareInterconnectBandwidthPercentagePolicyBandwidthPercentage:InterconnectApplicationAwareInterconnectBandwidthPercentagePolicyBandwidthPercentage"
                    },
                    "description": "(Optional, Beta)\nSpecify bandwidth percentages for various traffic classes for queuing\ntype Bandwidth Percent.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectApplicationAwareInterconnectBandwidthPercentagePolicyBandwidthPercentage:InterconnectApplicationAwareInterconnectBandwidthPercentagePolicyBandwidthPercentage": {
            "properties": {
                "percentage": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nBandwidth percentage for a specific traffic class.\n"
                },
                "trafficClass": {
                    "type": "string",
                    "description": "(Optional, Beta)\nEnum representing the various traffic classes offered by AAI.\nDefault value is `TC_UNSPECIFIED`.\nPossible values are: `TC_UNSPECIFIED`, `TC1`, `TC2`, `TC3`, `TC4`, `TC5`, `TC6`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectApplicationAwareInterconnectShapeAveragePercentage:InterconnectApplicationAwareInterconnectShapeAveragePercentage": {
            "properties": {
                "percentage": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nBandwidth percentage for a specific traffic class.\n"
                },
                "trafficClass": {
                    "type": "string",
                    "description": "(Optional, Beta)\nEnum representing the various traffic classes offered by AAI.\nDefault value is `TC_UNSPECIFIED`.\nPossible values are: `TC_UNSPECIFIED`, `TC1`, `TC2`, `TC3`, `TC4`, `TC5`, `TC6`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectApplicationAwareInterconnectStrictPriorityPolicy:InterconnectApplicationAwareInterconnectStrictPriorityPolicy": {
            "type": "object"
        },
        "gcp:compute/InterconnectAttachmentGroupAttachment:InterconnectAttachmentGroupAttachment": {
            "properties": {
                "attachment": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/InterconnectAttachmentGroupConfigured:InterconnectAttachmentGroupConfigured": {
            "properties": {
                "availabilitySlas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectAttachmentGroupConfiguredAvailabilitySla:InterconnectAttachmentGroupConfiguredAvailabilitySla"
                    },
                    "description": "(Output)\nWhich SLA this group is configured to support, and why this\ngroup does or does not meet that SLA's requirements.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "availabilitySlas"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectAttachmentGroupConfiguredAvailabilitySla:InterconnectAttachmentGroupConfiguredAvailabilitySla": {
            "properties": {
                "effectiveSla": {
                    "type": "string",
                    "description": "(Output)\nWhich SLA this group supports. Options are the same as the\nintent.\n"
                },
                "intendedSlaBlockers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker:InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker"
                    },
                    "description": "(Output)\nReasons why configuration.availabilitySLA.sla differs from\nintent.availabilitySLA. This list is empty if and only if those are the\nsame.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "effectiveSla",
                        "intendedSlaBlockers"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker:InterconnectAttachmentGroupConfiguredAvailabilitySlaIntendedSlaBlocker": {
            "properties": {
                "attachments": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Attachments in the AttachmentGroup. Keys are arbitrary user-specified\nstrings. Users are encouraged, but not required, to use their preferred\nformat for resource links as keys.\nNote that there are add-members and remove-members methods in gcloud.\nThe size of this map is limited by an \"Attachments per group\" quota.\nStructure is documented below.\n"
                },
                "blockerType": {
                    "type": "string",
                    "description": "(Output)\nThe category of an unmet SLA requirement.\n"
                },
                "documentationLink": {
                    "type": "string",
                    "description": "(Output)\nThe url of Google Cloud public documentation explaining\nthis requirement. This is set for every type of requirement.\n"
                },
                "explanation": {
                    "type": "string",
                    "description": "(Output)\nA human-readable explanation of this requirement and\nwhy it's not met. This is set for every type of requirement.\n"
                },
                "metros": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nMetros used to explain this blocker in more detail.\nThese are three-letter lowercase strings like \"iad\". This will be set\nfor some blockers (like NO_ATTACHMENTS_IN_METRO_AND_ZONE) but does\nnot apply to others.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nRegions used to explain this blocker in more\ndetail. These are region names formatted like \"us-central1\". This\nwill be set for some blockers (like INCOMPATIBLE_REGIONS) but does\nnot apply to others.\n"
                },
                "zones": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nZones used to explain this blocker in more detail.\nFormat is \"zone1\" and/or \"zone2\". This will be set for some blockers\n(like  MISSING_ZONE) but does not apply to others.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "attachments",
                        "blockerType",
                        "documentationLink",
                        "explanation",
                        "metros",
                        "regions",
                        "zones"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectAttachmentGroupIntent:InterconnectAttachmentGroupIntent": {
            "properties": {
                "availabilitySla": {
                    "type": "string",
                    "description": "Which SLA the user intends this group to support.\nPossible values are: `PRODUCTION_NON_CRITICAL`, `PRODUCTION_CRITICAL`, `NO_SLA`, `AVAILABILITY_SLA_UNSPECIFIED`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectAttachmentGroupLogicalStructure:InterconnectAttachmentGroupLogicalStructure": {
            "properties": {
                "regions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectAttachmentGroupLogicalStructureRegion:InterconnectAttachmentGroupLogicalStructureRegion"
                    },
                    "description": "(Output)\nRegions used to explain this blocker in more\ndetail. These are region names formatted like \"us-central1\". This\nwill be set for some blockers (like INCOMPATIBLE_REGIONS) but does\nnot apply to others.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "regions"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectAttachmentGroupLogicalStructureRegion:InterconnectAttachmentGroupLogicalStructureRegion": {
            "properties": {
                "metros": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectAttachmentGroupLogicalStructureRegionMetro:InterconnectAttachmentGroupLogicalStructureRegionMetro"
                    },
                    "description": "(Output)\nMetros used to explain this blocker in more detail.\nThese are three-letter lowercase strings like \"iad\". This will be set\nfor some blockers (like NO_ATTACHMENTS_IN_METRO_AND_ZONE) but does\nnot apply to others.\n"
                },
                "region": {
                    "type": "string",
                    "description": "(Output)\nThe name of a region, like \"us-central1\".\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "metros",
                        "region"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectAttachmentGroupLogicalStructureRegionMetro:InterconnectAttachmentGroupLogicalStructureRegionMetro": {
            "properties": {
                "facilities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectAttachmentGroupLogicalStructureRegionMetroFacility:InterconnectAttachmentGroupLogicalStructureRegionMetroFacility"
                    },
                    "description": "(Output)\nThe facilities used for this group's Attachments'\nInterconnects.\nStructure is documented below.\n"
                },
                "metro": {
                    "type": "string",
                    "description": "(Output)\nThe name of the metro, as a three-letter lowercase\nstring like \"iad\". This is the first component of the location of an\nInterconnect.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "facilities",
                        "metro"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectAttachmentGroupLogicalStructureRegionMetroFacility:InterconnectAttachmentGroupLogicalStructureRegionMetroFacility": {
            "properties": {
                "facility": {
                    "type": "string",
                    "description": "(Output)\nThe name of a facility, like \"iad-1234\".\n"
                },
                "zones": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone:InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone"
                    },
                    "description": "(Output)\nZones used to explain this blocker in more detail.\nFormat is \"zone1\" and/or \"zone2\". This will be set for some blockers\n(like  MISSING_ZONE) but does not apply to others.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "facility",
                        "zones"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone:InterconnectAttachmentGroupLogicalStructureRegionMetroFacilityZone": {
            "properties": {
                "attachment": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output, Deprecated)\nURLs of Attachments in the given zone, to the given\nregion, on Interconnects in the given facility and metro. Every\nAttachment in the AG has such an entry.\n",
                    "deprecationMessage": "\u003cspan pulumi-lang-nodejs=\"`attachment`\" pulumi-lang-dotnet=\"`Attachment`\" pulumi-lang-go=\"`attachment`\" pulumi-lang-python=\"`attachment`\" pulumi-lang-yaml=\"`attachment`\" pulumi-lang-java=\"`attachment`\" pulumi-lang-hcl=\"`attachment`\"\u003e`attachment`\u003c/span\u003e is deprecated and will be removed in a future major release. Use \u003cspan pulumi-lang-nodejs=\"`attachments`\" pulumi-lang-dotnet=\"`Attachments`\" pulumi-lang-go=\"`attachments`\" pulumi-lang-python=\"`attachments`\" pulumi-lang-yaml=\"`attachments`\" pulumi-lang-java=\"`attachments`\" pulumi-lang-hcl=\"`attachments`\"\u003e`attachments`\u003c/span\u003e instead."
                },
                "attachments": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Attachments in the AttachmentGroup. Keys are arbitrary user-specified\nstrings. Users are encouraged, but not required, to use their preferred\nformat for resource links as keys.\nNote that there are add-members and remove-members methods in gcloud.\nThe size of this map is limited by an \"Attachments per group\" quota.\nStructure is documented below.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "(Output)\nThe zones that Attachments in this group are present\nin, in the given facilities.  This is inherited from their\nInterconnects.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "attachment",
                        "attachments",
                        "zone"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectAttachmentL2Forwarding:InterconnectAttachmentL2Forwarding": {
            "properties": {
                "applianceMappings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectAttachmentL2ForwardingApplianceMapping:InterconnectAttachmentL2ForwardingApplianceMapping"
                    },
                    "description": "A map of VLAN tags to appliances and optional inner mapping rules.\n"
                },
                "defaultApplianceIpAddress": {
                    "type": "string",
                    "description": "The default appliance IP address.\n"
                },
                "geneveHeader": {
                    "$ref": "#/types/gcp:compute/InterconnectAttachmentL2ForwardingGeneveHeader:InterconnectAttachmentL2ForwardingGeneveHeader",
                    "description": "GeneveHeader related configurations.\n"
                },
                "network": {
                    "type": "string",
                    "description": "URL of the network to which this attachment belongs.\n"
                },
                "tunnelEndpointIpAddress": {
                    "type": "string",
                    "description": "The tunnel endpoint IP address.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectAttachmentL2ForwardingApplianceMapping:InterconnectAttachmentL2ForwardingApplianceMapping": {
            "properties": {
                "applianceIpAddress": {
                    "type": "string",
                    "description": "The appliance IP address.\n"
                },
                "innerVlanToApplianceMappings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectAttachmentL2ForwardingApplianceMappingInnerVlanToApplianceMapping:InterconnectAttachmentL2ForwardingApplianceMappingInnerVlanToApplianceMapping"
                    },
                    "description": "Structure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of this appliance mapping rule.\n"
                },
                "vlanId": {
                    "type": "string",
                    "description": "The VLAN tag.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectAttachmentL2ForwardingApplianceMappingInnerVlanToApplianceMapping:InterconnectAttachmentL2ForwardingApplianceMappingInnerVlanToApplianceMapping": {
            "properties": {
                "innerApplianceIpAddress": {
                    "type": "string",
                    "description": "The inner appliance IP address.\n"
                },
                "innerVlanTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of inner VLAN tags.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectAttachmentL2ForwardingGeneveHeader:InterconnectAttachmentL2ForwardingGeneveHeader": {
            "properties": {
                "vni": {
                    "type": "integer",
                    "description": "VNI is a 24-bit unique virtual network identifier.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectAttachmentParams:InterconnectAttachmentParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the interconnect attachment. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedL2Forwarding\"\" pulumi-lang-dotnet=\"\"NestedL2Forwarding\"\" pulumi-lang-go=\"\"nestedL2Forwarding\"\" pulumi-lang-python=\"\"nested_l2_forwarding\"\" pulumi-lang-yaml=\"\"nestedL2Forwarding\"\" pulumi-lang-java=\"\"nestedL2Forwarding\"\" pulumi-lang-hcl=\"\"nested_l2_forwarding\"\"\u003e\"nestedL2Forwarding\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`l2Forwarding`\" pulumi-lang-dotnet=\"`L2Forwarding`\" pulumi-lang-go=\"`l2Forwarding`\" pulumi-lang-python=\"`l2_forwarding`\" pulumi-lang-yaml=\"`l2Forwarding`\" pulumi-lang-java=\"`l2Forwarding`\" pulumi-lang-hcl=\"`l2_forwarding`\"\u003e`l2Forwarding`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectAttachmentPrivateInterconnectInfo:InterconnectAttachmentPrivateInterconnectInfo": {
            "properties": {
                "tag8021q": {
                    "type": "integer",
                    "description": "(Output)\n802.1q encapsulation tag to be used for traffic between\nGoogle and the customer, going to and from this network and region.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "tag8021q"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectCircuitInfo:InterconnectCircuitInfo": {
            "properties": {
                "customerDemarcId": {
                    "type": "string",
                    "description": "(Output)\nCustomer-side demarc ID for this circuit.\n"
                },
                "googleCircuitId": {
                    "type": "string",
                    "description": "(Output)\nGoogle-assigned unique ID for this circuit. Assigned at circuit turn-up.\n"
                },
                "googleDemarcId": {
                    "type": "string",
                    "description": "(Output)\nGoogle-side demarc ID for this circuit. Assigned at circuit turn-up and provided by\nGoogle to the customer in the LOA.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "customerDemarcId",
                        "googleCircuitId",
                        "googleDemarcId"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectExpectedOutage:InterconnectExpectedOutage": {
            "properties": {
                "affectedCircuits": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nIf issueType is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be\naffected.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource. Provide this property when you create the resource.\n"
                },
                "endTime": {
                    "type": "string",
                    "description": "(Output)\nScheduled end time for the outage (milliseconds since Unix epoch).\n"
                },
                "issueType": {
                    "type": "string",
                    "description": "(Output)\nForm this outage is expected to take. Note that the versions of this enum prefixed with\n\"IT_\" have been deprecated in favor of the unprefixed values. Can take one of the\nfollowing values:\n- OUTAGE: The Interconnect may be completely out of service for some or all of the\nspecified window.\n- PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain\nup, but with reduced bandwidth.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the resource. Provided by the client when the resource is created. The name must be\n1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters\nlong and match the regular expression `a-z?` which means the first\ncharacter must be a lowercase letter, and all following characters must be a dash,\nlowercase letter, or digit, except the last character, which cannot be a dash.\n"
                },
                "source": {
                    "type": "string",
                    "description": "(Output)\nThe party that generated this notification. Note that the value of NSRC_GOOGLE has been\ndeprecated in favor of GOOGLE. Can take the following value:\n- GOOGLE: this notification as generated by Google.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "(Output)\nScheduled start time for the outage (milliseconds since Unix epoch).\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of this notification. Note that the versions of this enum prefixed with \"NS_\" have\nbeen deprecated in favor of the unprefixed values. Can take one of the following values:\n- ACTIVE: This outage notification is active. The event could be in the past, present,\nor future. See startTime and endTime for scheduling.\n- CANCELLED: The outage associated with this notification was cancelled before the\noutage was due to start.\n- COMPLETED: The outage associated with this notification is complete.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "affectedCircuits",
                        "description",
                        "endTime",
                        "issueType",
                        "name",
                        "source",
                        "startTime",
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectGroupConfigured:InterconnectGroupConfigured": {
            "properties": {
                "topologyCapabilities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectGroupConfiguredTopologyCapability:InterconnectGroupConfiguredTopologyCapability"
                    },
                    "description": "(Output)\nHow reliable this topology is configured to be, and why\nthis group does or does not meet the requirements for the intended\ncapability.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "topologyCapabilities"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectGroupConfiguredTopologyCapability:InterconnectGroupConfiguredTopologyCapability": {
            "properties": {
                "intendedCapabilityBlockers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker:InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker"
                    },
                    "description": "(Output)\nReasons why configuration.topologyCapability.sla differs\nfrom intent.topologyCapability. This list is empty if and only if those\nare the same.\nStructure is documented below.\n"
                },
                "supportedSla": {
                    "type": "string",
                    "description": "(Output)\nWhich level of reliability this group is configured to\nsupport.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "intendedCapabilityBlockers",
                        "supportedSla"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker:InterconnectGroupConfiguredTopologyCapabilityIntendedCapabilityBlocker": {
            "properties": {
                "blockerType": {
                    "type": "string",
                    "description": "(Output)\nThe category of an unmet SLA requirement. The Intended\nSLA Blockers section below explains this field and how it relates to\nother fields in intendedCapabilityBlockers.\n"
                },
                "documentationLink": {
                    "type": "string",
                    "description": "(Output)\nThe url of Google Cloud public documentation explaining\nthis requirement. This is set for every type of requirement.\n"
                },
                "explanation": {
                    "type": "string",
                    "description": "(Output)\nA human-readable explanation of this requirement and\nwhy it's not met. This is set for every type of requirement.\n"
                },
                "facilities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nFacilities used to explain this blocker in more detail.\nLike physicalStructure.metros.facilities.facility, this is a numeric\nstring like \"5467\".\n"
                },
                "interconnects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Interconnects in the InterconnectGroup. Keys are arbitrary user-specified\nstrings. Users are encouraged, but not required, to use their preferred\nformat for resource links as keys.\nNote that there are add-members and remove-members methods in gcloud.\nThe size of this map is limited by an \"Interconnects per group\" quota.\nStructure is documented below.\n"
                },
                "metros": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nMetros used to explain this blocker in more detail.\nThese are three-letter lowercase strings like \"iad\". A blocker like\nINCOMPATIBLE_METROS will specify the problematic metros in this\nfield.\n"
                },
                "zones": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nZones used to explain this blocker in more detail.\nZone names are \"zone1\" and/or \"zone2\".\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "blockerType",
                        "documentationLink",
                        "explanation",
                        "facilities",
                        "interconnects",
                        "metros",
                        "zones"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectGroupIntent:InterconnectGroupIntent": {
            "properties": {
                "topologyCapability": {
                    "type": "string",
                    "description": "The reliability the user intends this group to be capable of, in terms\nof the Interconnect product SLAs.\nPossible values are: `PRODUCTION_NON_CRITICAL`, `PRODUCTION_CRITICAL`, `NO_SLA`, `AVAILABILITY_SLA_UNSPECIFIED`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/InterconnectGroupInterconnect:InterconnectGroupInterconnect": {
            "properties": {
                "interconnect": {
                    "type": "string",
                    "description": "The URL of an Interconnect in this group. All Interconnects in the group are unique.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/InterconnectGroupPhysicalStructure:InterconnectGroupPhysicalStructure": {
            "properties": {
                "metros": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectGroupPhysicalStructureMetro:InterconnectGroupPhysicalStructureMetro"
                    },
                    "description": "(Output)\nMetros used to explain this blocker in more detail.\nThese are three-letter lowercase strings like \"iad\". A blocker like\nINCOMPATIBLE_METROS will specify the problematic metros in this\nfield.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "metros"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectGroupPhysicalStructureMetro:InterconnectGroupPhysicalStructureMetro": {
            "properties": {
                "facilities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectGroupPhysicalStructureMetroFacility:InterconnectGroupPhysicalStructureMetroFacility"
                    },
                    "description": "(Output)\nFacilities used to explain this blocker in more detail.\nLike physicalStructure.metros.facilities.facility, this is a numeric\nstring like \"5467\".\n"
                },
                "metro": {
                    "type": "string",
                    "description": "(Output)\nThe name of the metro, as a three-letter lowercase string\nlike \"iad\". This is the first component of the location of\nInterconnects underneath this.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "facilities",
                        "metro"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectGroupPhysicalStructureMetroFacility:InterconnectGroupPhysicalStructureMetroFacility": {
            "properties": {
                "facility": {
                    "type": "string",
                    "description": "(Output)\nThe ID of this facility, as a numeric string like\n\"5467\". This is the third component of the location of Interconnects\nin this facility.\n"
                },
                "zones": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectGroupPhysicalStructureMetroFacilityZone:InterconnectGroupPhysicalStructureMetroFacilityZone"
                    },
                    "description": "(Output)\nZones used to explain this blocker in more detail.\nZone names are \"zone1\" and/or \"zone2\".\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "facility",
                        "zones"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectGroupPhysicalStructureMetroFacilityZone:InterconnectGroupPhysicalStructureMetroFacilityZone": {
            "properties": {
                "interconnects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Interconnects in the InterconnectGroup. Keys are arbitrary user-specified\nstrings. Users are encouraged, but not required, to use their preferred\nformat for resource links as keys.\nNote that there are add-members and remove-members methods in gcloud.\nThe size of this map is limited by an \"Interconnects per group\" quota.\nStructure is documented below.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "(Output)\nThe name of the zone, either \"zone1\" or \"zone2\".\nThis is the second component of the location of Interconnects in\nthis facility.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "interconnects",
                        "zone"
                    ]
                }
            }
        },
        "gcp:compute/InterconnectMacsec:InterconnectMacsec": {
            "properties": {
                "failOpen": {
                    "type": "boolean",
                    "description": "If set to true, the Interconnect connection is configured with a should-secure\nMACsec security policy, that allows the Google router to fallback to cleartext\ntraffic if the MKA session cannot be established. By default, the Interconnect\nconnection is configured with a must-secure security policy that drops all traffic\nif the MKA session cannot be established with your router.\n"
                },
                "preSharedKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/InterconnectMacsecPreSharedKey:InterconnectMacsecPreSharedKey"
                    },
                    "description": "A keychain placeholder describing a set of named key objects along with their\nstart times. A MACsec CKN/CAK is generated for each key in the key chain.\nGoogle router automatically picks the key with the most recent startTime when establishing\nor re-establishing a MACsec secure link.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "preSharedKeys"
            ]
        },
        "gcp:compute/InterconnectMacsecPreSharedKey:InterconnectMacsecPreSharedKey": {
            "properties": {
                "failOpen": {
                    "type": "boolean",
                    "description": "(Optional, Deprecated)\nIf set to true, the Interconnect connection is configured with a should-secure\nMACsec security policy, that allows the Google router to fallback to cleartext\ntraffic if the MKA session cannot be established. By default, the Interconnect\nconnection is configured with a must-secure security policy that drops all traffic\nif the MKA session cannot be established with your router.\n\n\u003e **Warning:** `failOpen` is deprecated and will be removed in a future major release. Use other `failOpen` instead.\n",
                    "deprecationMessage": "`failOpen` is deprecated and will be removed in a future major release. Use other `failOpen` instead."
                },
                "name": {
                    "type": "string",
                    "description": "A name for this pre-shared key. The name must be 1-63 characters long, and\ncomply with RFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression `a-z?` which means the first character\nmust be a lowercase letter, and all following characters must be a dash, lowercase\nletter, or digit, except the last character, which cannot be a dash.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "A RFC3339 timestamp on or after which the key is valid. startTime can be in the\nfuture. If the keychain has a single key, startTime can be omitted. If the keychain\nhas multiple keys, startTime is mandatory for each key. The start times of keys must\nbe in increasing order. The start times of two consecutive keys must be at least 6\nhours apart.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/InterconnectParams:InterconnectParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the interconnect. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/MachineImageIamBindingCondition:MachineImageIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/MachineImageIamMemberCondition:MachineImageIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/MachineImageMachineImageEncryptionKey:MachineImageMachineImageEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The name of the encryption key that is stored in Google Cloud KMS.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "(Output)\nThe RFC 4648 base64 encoded SHA-256 hash of the\ncustomer-supplied encryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/MachineImageParams:MachineImageParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the machine image. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/ManagedSslCertificateManaged:ManagedSslCertificateManaged": {
            "properties": {
                "domains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Domains for which a managed SSL certificate will be valid.  Currently,\nthere can be up to 100 domains in this list.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "domains"
            ]
        },
        "gcp:compute/MangedSslCertificateManaged:MangedSslCertificateManaged": {
            "properties": {
                "domains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Domains for which a managed SSL certificate will be valid.  Currently,\nthere can be up to 100 domains in this list.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "domains"
            ]
        },
        "gcp:compute/NetworkAttachmentConnectionEndpoint:NetworkAttachmentConnectionEndpoint": {
            "properties": {
                "ipAddress": {
                    "type": "string",
                    "description": "(Output)\nThe IPv4 address assigned to the producer instance network interface. This value will be a range in case of Serverless.\n"
                },
                "projectIdOrNum": {
                    "type": "string",
                    "description": "(Output)\nThe project id or number of the interface to which the IP was assigned.\n"
                },
                "secondaryIpCidrRanges": {
                    "type": "string",
                    "description": "(Output)\nAlias IP ranges from the same subnetwork.\n"
                },
                "status": {
                    "type": "string",
                    "description": "(Output)\nThe status of a connected endpoint to this network attachment.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "(Output)\nThe subnetwork used to assign the IP to the producer instance network interface.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipAddress",
                        "projectIdOrNum",
                        "secondaryIpCidrRanges",
                        "status",
                        "subnetwork"
                    ]
                }
            }
        },
        "gcp:compute/NetworkEndpointListNetworkEndpoint:NetworkEndpointListNetworkEndpoint": {
            "properties": {
                "instance": {
                    "type": "string",
                    "description": "The name for a specific VM instance that the IP address belongs to.\nThis is required for network endpoints of type GCE_VM_IP_PORT.\nThe instance must be in the same zone as the network endpoint group.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IPv4 address of network endpoint. The IP address must belong\nto a VM in GCE (either the primary IP or as part of an aliased IP\nrange).\n**Note** \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\" pulumi-lang-hcl=\"`ip_address`\"\u003e`ipAddress`\u003c/span\u003e is required unless the Network Endpoint Group is created with the type of `GCE_VM_IP_DEDICATED_BACKEND`\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number of network endpoint.\n**Note** \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is required unless the Network Endpoint Group is created\nwith the type of `GCE_VM_IP`\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "instance"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyPacketMirroringRuleMatch:NetworkFirewallPolicyPacketMirroringRuleMatch": {
            "properties": {
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyPacketMirroringRuleMatchLayer4Config:NetworkFirewallPolicyPacketMirroringRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-dotnet=\"\"NestedMatchLayer4Configs\"\" pulumi-lang-go=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-python=\"\"nested_match_layer4_configs\"\" pulumi-lang-yaml=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-java=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-hcl=\"\"nested_match_layer4_configs\"\"\u003e\"nestedMatchLayer4Configs\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Configs`\" pulumi-lang-dotnet=\"`Layer4Configs`\" pulumi-lang-go=\"`layer4Configs`\" pulumi-lang-python=\"`layer4_configs`\" pulumi-lang-yaml=\"`layer4Configs`\" pulumi-lang-java=\"`layer4Configs`\" pulumi-lang-hcl=\"`layer4_configs`\"\u003e`layer4Configs`\u003c/span\u003e block supports:\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.\n"
                }
            },
            "type": "object",
            "required": [
                "layer4Configs"
            ]
        },
        "gcp:compute/NetworkFirewallPolicyPacketMirroringRuleMatchLayer4Config:NetworkFirewallPolicyPacketMirroringRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule.\nThis value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "required": [
                "ipProtocol"
            ]
        },
        "gcp:compute/NetworkFirewallPolicyPacketMirroringRuleTargetSecureTag:NetworkFirewallPolicyPacketMirroringRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\ndiff_suppress_func: 'tpgresource.CompareSelfLinkOrResourceName'\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyRuleMatch:NetworkFirewallPolicyRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.\n"
                },
                "destNetworkContext": {
                    "type": "string",
                    "description": "Network context of the traffic destination.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic destination.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of dest region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyRuleMatchLayer4Config:NetworkFirewallPolicyRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.\n"
                },
                "srcNetworkContext": {
                    "type": "string",
                    "description": "Network context of the traffic source.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic source.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Networks of the traffic source. It can be either a full or partial url.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyRuleMatchSrcSecureTag:NetworkFirewallPolicyRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.\nStructure is documented below.\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-dotnet=\"\"NestedMatchLayer4Configs\"\" pulumi-lang-go=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-python=\"\"nested_match_layer4_configs\"\" pulumi-lang-yaml=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-java=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-hcl=\"\"nested_match_layer4_configs\"\"\u003e\"nestedMatchLayer4Configs\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Configs`\" pulumi-lang-dotnet=\"`Layer4Configs`\" pulumi-lang-go=\"`layer4Configs`\" pulumi-lang-python=\"`layer4_configs`\" pulumi-lang-yaml=\"`layer4Configs`\" pulumi-lang-java=\"`layer4Configs`\" pulumi-lang-hcl=\"`layer4_configs`\"\u003e`layer4Configs`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object",
            "required": [
                "layer4Configs"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destNetworkContext",
                        "destNetworkScope",
                        "layer4Configs",
                        "srcNetworkContext",
                        "srcNetworkScope"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyRuleMatchLayer4Config:NetworkFirewallPolicyRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule.\nThis value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "required": [
                "ipProtocol"
            ]
        },
        "gcp:compute/NetworkFirewallPolicyRuleMatchSrcSecureTag:NetworkFirewallPolicyRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyRuleTargetSecureTag:NetworkFirewallPolicyRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRule:NetworkFirewallPolicyWithRulesPredefinedRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "(Output)\nThe Action to perform when the client connection triggers the rule. Can currently be either\n\"allow\", \"deny\", \u003cspan pulumi-lang-nodejs=\"\"applySecurityProfileGroup\"\" pulumi-lang-dotnet=\"\"ApplySecurityProfileGroup\"\" pulumi-lang-go=\"\"applySecurityProfileGroup\"\" pulumi-lang-python=\"\"apply_security_profile_group\"\" pulumi-lang-yaml=\"\"applySecurityProfileGroup\"\" pulumi-lang-java=\"\"applySecurityProfileGroup\"\" pulumi-lang-hcl=\"\"apply_security_profile_group\"\"\u003e\"applySecurityProfileGroup\"\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"\"gotoNext\"\" pulumi-lang-dotnet=\"\"GotoNext\"\" pulumi-lang-go=\"\"gotoNext\"\" pulumi-lang-python=\"\"goto_next\"\" pulumi-lang-yaml=\"\"gotoNext\"\" pulumi-lang-java=\"\"gotoNext\"\" pulumi-lang-hcl=\"\"goto_next\"\"\u003e\"gotoNext\"\u003c/span\u003e.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "(Output)\nThe direction in which this rule applies. If unspecified an INGRESS rule is created.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nDenotes whether the firewall policy rule is disabled. When set to true,\nthe firewall policy rule is not enforced and traffic behaves as if it did\nnot exist. If this is unspecified, the firewall policy rule will be\nenabled.\n"
                },
                "enableLogging": {
                    "type": "boolean",
                    "description": "(Output)\nDenotes whether to enable logging for a particular rule.\nIf logging is enabled, logs will be exported to the\nconfigured export destination in Stackdriver.\n"
                },
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleMatch:NetworkFirewallPolicyWithRulesPredefinedRuleMatch"
                    },
                    "description": "(Output)\nA match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "(Output)\nAn integer indicating the priority of a rule in the list. The priority must be a value\nbetween 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the\nhighest priority and 2147483647 is the lowest priority.\n"
                },
                "ruleName": {
                    "type": "string",
                    "description": "(Output)\nAn optional name for the rule. This field is not a unique identifier\nand can be updated.\n"
                },
                "securityProfileGroup": {
                    "type": "string",
                    "description": "(Output)\nA fully-qualified URL of a SecurityProfile resource instance.\nExample:\nhttps://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group\nMust be specified if action is 'apply_security_profile_group'.\n"
                },
                "targetSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleTargetSecureTag:NetworkFirewallPolicyWithRulesPredefinedRuleTargetSecureTag"
                    },
                    "description": "(Output)\nA list of secure tags that controls which instances the firewall rule\napplies to. If \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, then the\nfirewall rule applies only to instances in the VPC network that have one\nof those EFFECTIVE secure tags, if all the\u003cspan pulumi-lang-nodejs=\" targetSecureTag \" pulumi-lang-dotnet=\" TargetSecureTag \" pulumi-lang-go=\" targetSecureTag \" pulumi-lang-python=\" target_secure_tag \" pulumi-lang-yaml=\" targetSecureTag \" pulumi-lang-java=\" targetSecureTag \" pulumi-lang-hcl=\" target_secure_tag \"\u003e targetSecureTag \u003c/span\u003eare in\nINEFFECTIVE state, then this rule will be ignored.\n\u003ccode\u003etargetSecureTag\u003c/code\u003e may not be set at the same time as\n\u003ccode\u003etargetServiceAccounts\u003c/code\u003e.\nIf neither \u003ccode\u003etargetServiceAccounts\u003c/code\u003e nor\n\u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, the firewall rule applies\nto all instances on the specified network.\nMaximum number of target label tags allowed is 256.\nStructure is documented below.\n"
                },
                "targetServiceAccounts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nA list of service accounts indicating the sets of\ninstances that are applied with this rule.\n"
                },
                "tlsInspect": {
                    "type": "boolean",
                    "description": "(Output)\nBoolean flag indicating if the traffic should be TLS decrypted.\nIt can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "description",
                        "direction",
                        "disabled",
                        "enableLogging",
                        "matches",
                        "priority",
                        "ruleName",
                        "securityProfileGroup",
                        "targetSecureTags",
                        "targetServiceAccounts",
                        "tlsInspect"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleMatch:NetworkFirewallPolicyWithRulesPredefinedRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination.\nMaximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Destination IP address range in CIDR format. Required for\nEGRESS rules.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of destination region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleMatchLayer4Config:NetworkFirewallPolicyWithRulesPredefinedRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source.\nMaximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source IP address range in CIDR format. Required for\nINGRESS rules.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag:NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-dotnet=\"\"NestedRuleMatchLayer4Config\"\" pulumi-lang-go=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-python=\"\"nested_rule_match_layer4_config\"\" pulumi-lang-yaml=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-java=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-hcl=\"\"nested_rule_match_layer4_config\"\"\u003e\"nestedRuleMatchLayer4Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Config`\" pulumi-lang-dotnet=\"`Layer4Config`\" pulumi-lang-go=\"`layer4Config`\" pulumi-lang-python=\"`layer4_config`\" pulumi-lang-yaml=\"`layer4Config`\" pulumi-lang-java=\"`layer4Config`\" pulumi-lang-hcl=\"`layer4_config`\"\u003e`layer4Config`\u003c/span\u003e block supports:\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic source.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destAddressGroups",
                        "destFqdns",
                        "destIpRanges",
                        "destRegionCodes",
                        "destThreatIntelligences",
                        "layer4Configs",
                        "srcAddressGroups",
                        "srcFqdns",
                        "srcIpRanges",
                        "srcRegionCodes",
                        "srcSecureTags",
                        "srcThreatIntelligences"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleMatchLayer4Config:NetworkFirewallPolicyWithRulesPredefinedRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "(Output)\nThe IP protocol to which this rule applies. The protocol\ntype is required when creating a firewall rule.\nThis value can either be one of the following well\nknown protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp),\nor the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nAn optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipProtocol",
                        "ports"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag:NetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesPredefinedRuleTargetSecureTag:NetworkFirewallPolicyWithRulesPredefinedRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesRule:NetworkFirewallPolicyWithRulesRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The Action to perform when the client connection triggers the rule. Can currently be either\n\"allow\", \"deny\", \u003cspan pulumi-lang-nodejs=\"\"applySecurityProfileGroup\"\" pulumi-lang-dotnet=\"\"ApplySecurityProfileGroup\"\" pulumi-lang-go=\"\"applySecurityProfileGroup\"\" pulumi-lang-python=\"\"apply_security_profile_group\"\" pulumi-lang-yaml=\"\"applySecurityProfileGroup\"\" pulumi-lang-java=\"\"applySecurityProfileGroup\"\" pulumi-lang-hcl=\"\"apply_security_profile_group\"\"\u003e\"applySecurityProfileGroup\"\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"\"gotoNext\"\" pulumi-lang-dotnet=\"\"GotoNext\"\" pulumi-lang-go=\"\"gotoNext\"\" pulumi-lang-python=\"\"goto_next\"\" pulumi-lang-yaml=\"\"gotoNext\"\" pulumi-lang-java=\"\"gotoNext\"\" pulumi-lang-hcl=\"\"goto_next\"\"\u003e\"gotoNext\"\u003c/span\u003e.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the rule.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "The direction in which this rule applies. If unspecified an INGRESS rule is created.\nPossible values are: `INGRESS`, `EGRESS`.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Denotes whether the firewall policy rule is disabled. When set to true,\nthe firewall policy rule is not enforced and traffic behaves as if it did\nnot exist. If this is unspecified, the firewall policy rule will be\nenabled.\n"
                },
                "enableLogging": {
                    "type": "boolean",
                    "description": "Denotes whether to enable logging for a particular rule.\nIf logging is enabled, logs will be exported to the\nconfigured export destination in Stackdriver.\n"
                },
                "match": {
                    "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesRuleMatch:NetworkFirewallPolicyWithRulesRuleMatch",
                    "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "An integer indicating the priority of a rule in the list. The priority must be a value\nbetween 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the\nhighest priority and 2147483647 is the lowest priority.\n"
                },
                "ruleName": {
                    "type": "string",
                    "description": "An optional name for the rule. This field is not a unique identifier\nand can be updated.\n"
                },
                "securityProfileGroup": {
                    "type": "string",
                    "description": "A fully-qualified URL of a SecurityProfile resource instance.\nExample:\nhttps://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group\nMust be specified if action is 'apply_security_profile_group'.\n"
                },
                "targetSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesRuleTargetSecureTag:NetworkFirewallPolicyWithRulesRuleTargetSecureTag"
                    },
                    "description": "A list of secure tags that controls which instances the firewall rule\napplies to. If \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, then the\nfirewall rule applies only to instances in the VPC network that have one\nof those EFFECTIVE secure tags, if all the\u003cspan pulumi-lang-nodejs=\" targetSecureTag \" pulumi-lang-dotnet=\" TargetSecureTag \" pulumi-lang-go=\" targetSecureTag \" pulumi-lang-python=\" target_secure_tag \" pulumi-lang-yaml=\" targetSecureTag \" pulumi-lang-java=\" targetSecureTag \" pulumi-lang-hcl=\" target_secure_tag \"\u003e targetSecureTag \u003c/span\u003eare in\nINEFFECTIVE state, then this rule will be ignored.\n\u003ccode\u003etargetSecureTag\u003c/code\u003e may not be set at the same time as\n\u003ccode\u003etargetServiceAccounts\u003c/code\u003e.\nIf neither \u003ccode\u003etargetServiceAccounts\u003c/code\u003e nor\n\u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, the firewall rule applies\nto all instances on the specified network.\nMaximum number of target label tags allowed is 256.\nStructure is documented below.\n"
                },
                "targetServiceAccounts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service accounts indicating the sets of\ninstances that are applied with this rule.\n"
                },
                "tlsInspect": {
                    "type": "boolean",
                    "description": "Boolean flag indicating if the traffic should be TLS decrypted.\nIt can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "match",
                "priority"
            ]
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesRuleMatch:NetworkFirewallPolicyWithRulesRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination.\nMaximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Destination IP address range in CIDR format. Required for\nEGRESS rules.\n"
                },
                "destNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic destination.\nPossible values are: `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of destination region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesRuleMatchLayer4Config:NetworkFirewallPolicyWithRulesRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source.\nMaximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source IP address range in CIDR format. Required for\nINGRESS rules.\n"
                },
                "srcNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic source.\nPossible values are: `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional, Beta)\nNetworks of the traffic source. It can be either a full or partial url.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag:NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-dotnet=\"\"NestedRuleMatchLayer4Config\"\" pulumi-lang-go=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-python=\"\"nested_rule_match_layer4_config\"\" pulumi-lang-yaml=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-java=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-hcl=\"\"nested_rule_match_layer4_config\"\"\u003e\"nestedRuleMatchLayer4Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Config`\" pulumi-lang-dotnet=\"`Layer4Config`\" pulumi-lang-go=\"`layer4Config`\" pulumi-lang-python=\"`layer4_config`\" pulumi-lang-yaml=\"`layer4Config`\" pulumi-lang-java=\"`layer4Config`\" pulumi-lang-hcl=\"`layer4_config`\"\u003e`layer4Config`\u003c/span\u003e block supports:\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic source.\n"
                }
            },
            "type": "object",
            "required": [
                "layer4Configs"
            ]
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesRuleMatchLayer4Config:NetworkFirewallPolicyWithRulesRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "(Output)\nThe IP protocol to which this rule applies. The protocol\ntype is required when creating a firewall rule.\nThis value can either be one of the following well\nknown protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp),\nor the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nAn optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "required": [
                "ipProtocol"
            ]
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag:NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/NetworkFirewallPolicyWithRulesRuleTargetSecureTag:NetworkFirewallPolicyWithRulesRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/NetworkParams:NetworkParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the network. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/NodeGroupAutoscalingPolicy:NodeGroupAutoscalingPolicy": {
            "properties": {
                "maxNodes": {
                    "type": "integer",
                    "description": "Maximum size of the node group. Set to a value less than or equal\nto 100 and greater than or equal to min-nodes.\n"
                },
                "minNodes": {
                    "type": "integer",
                    "description": "Minimum size of the node group. Must be less\nthan or equal to max-nodes. The default value is 0.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The autoscaling mode. Set to one of the following:\n- OFF: Disables the autoscaler.\n- ON: Enables scaling in and scaling out.\n- ONLY_SCALE_OUT: Enables only scaling out.\nYou must use this mode if your node groups are configured to\nrestart their hosted VMs on minimal servers.\nPossible values are: `OFF`, `ON`, `ONLY_SCALE_OUT`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxNodes",
                        "minNodes",
                        "mode"
                    ]
                }
            }
        },
        "gcp:compute/NodeGroupMaintenanceWindow:NodeGroupMaintenanceWindow": {
            "properties": {
                "startTime": {
                    "type": "string",
                    "description": "instances.start time of the window. This must be in UTC format that resolves to one of 00:00, 04:00, 08:00, 12:00, 16:00, or 20:00. For example, both 13:00-5 and 08:00 are valid.\n"
                }
            },
            "type": "object",
            "required": [
                "startTime"
            ]
        },
        "gcp:compute/NodeGroupShareSettings:NodeGroupShareSettings": {
            "properties": {
                "projectMaps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/NodeGroupShareSettingsProjectMap:NodeGroupShareSettingsProjectMap"
                    },
                    "description": "A map of project id and project config. This is only valid when shareType's value is SPECIFIC_PROJECTS.\nStructure is documented below.\n"
                },
                "shareType": {
                    "type": "string",
                    "description": "Node group sharing type.\nPossible values are: `ORGANIZATION`, `SPECIFIC_PROJECTS`, `LOCAL`.\n"
                }
            },
            "type": "object",
            "required": [
                "shareType"
            ]
        },
        "gcp:compute/NodeGroupShareSettingsProjectMap:NodeGroupShareSettingsProjectMap": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project id/number should be the same as the key of this project config in the project map.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "projectId"
            ]
        },
        "gcp:compute/NodeTemplateAccelerator:NodeTemplateAccelerator": {
            "properties": {
                "acceleratorCount": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this\nnode template.\n",
                    "willReplaceOnChanges": true
                },
                "acceleratorType": {
                    "type": "string",
                    "description": "Full or partial URL of the accelerator type resource to expose\nto this node template.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/NodeTemplateDisk:NodeTemplateDisk": {
            "properties": {
                "diskCount": {
                    "type": "integer",
                    "description": "Specifies the number of such disks.\n",
                    "willReplaceOnChanges": true
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "Specifies the size of the disk in base-2 GB.\n",
                    "willReplaceOnChanges": true
                },
                "diskType": {
                    "type": "string",
                    "description": "Specifies the desired disk type on the node. This disk type must be a local storage type (e.g.: local-ssd). Note that for nodeTemplates, this should be the name of the disk type and not its URL.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/NodeTemplateNodeTypeFlexibility:NodeTemplateNodeTypeFlexibility": {
            "properties": {
                "cpus": {
                    "type": "string",
                    "description": "Number of virtual CPUs to use.\n",
                    "willReplaceOnChanges": true
                },
                "localSsd": {
                    "type": "string",
                    "description": "(Output)\nUse local SSD\n"
                },
                "memory": {
                    "type": "string",
                    "description": "Physical memory available to the node, defined in MB.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "localSsd"
                    ]
                }
            }
        },
        "gcp:compute/NodeTemplateServerBinding:NodeTemplateServerBinding": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Type of server binding policy. If `RESTART_NODE_ON_ANY_SERVER`,\nnodes using this template will restart on any physical server\nfollowing a maintenance event.\nIf `RESTART_NODE_ON_MINIMAL_SERVER`, nodes using this template\nwill restart on the same physical server following a maintenance\nevent, instead of being live migrated to or restarted on a new\nphysical server. This option may be useful if you are using\nsoftware licenses tied to the underlying server characteristics\nsuch as physical sockets or cores, to avoid the need for\nadditional licenses when maintenance occurs. However, VMs on such\nnodes will experience outages while maintenance is applied.\nPossible values are: `RESTART_NODE_ON_ANY_SERVER`, `RESTART_NODE_ON_MINIMAL_SERVERS`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyAdvancedOptionsConfig:OrganizationSecurityPolicyAdvancedOptionsConfig": {
            "properties": {
                "jsonCustomConfig": {
                    "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyAdvancedOptionsConfigJsonCustomConfig:OrganizationSecurityPolicyAdvancedOptionsConfigJsonCustomConfig",
                    "description": "Custom JSON parsing configurations.\nStructure is documented below.\n"
                },
                "jsonParsing": {
                    "type": "string",
                    "description": "JSON body parsing. Supported values include: \"DISABLED\", \"STANDARD\", \"STANDARD_WITH_GRAPHQL\".\nPossible values are: `DISABLED`, `STANDARD`, `STANDARD_WITH_GRAPHQL`.\n"
                },
                "logLevel": {
                    "type": "string",
                    "description": "Logging level. Supported values include: \"NORMAL\", \"VERBOSE\".\nPossible values are: `NORMAL`, `VERBOSE`.\n"
                },
                "requestBodyInspectionSize": {
                    "type": "string",
                    "description": "The maximum request size chosen by the customer with Waf enabled. Values supported are \"8KB\", \"16KB\", \"32KB\", \"48KB\" and \"64KB\".\nValues are case insensitive.\nPossible values are: `8KB`, `16KB`, `32KB`, `48KB`, `64KB`.\n"
                },
                "userIpRequestHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of case-insensitive request header names to use for resolving the client source IP address.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/OrganizationSecurityPolicyAdvancedOptionsConfigJsonCustomConfig:OrganizationSecurityPolicyAdvancedOptionsConfigJsonCustomConfig": {
            "properties": {
                "contentTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of content types to be parsed as JSON.\n"
                }
            },
            "type": "object",
            "required": [
                "contentTypes"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyRuleHeaderAction:OrganizationSecurityPolicyRuleHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRuleHeaderActionRequestHeadersToAdd:OrganizationSecurityPolicyRuleHeaderActionRequestHeadersToAdd"
                    },
                    "description": "The list of request headers to add or overwrite if they're already present.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/OrganizationSecurityPolicyRuleHeaderActionRequestHeadersToAdd:OrganizationSecurityPolicyRuleHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to set.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value to set the named header to.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/OrganizationSecurityPolicyRuleMatch:OrganizationSecurityPolicyRuleMatch": {
            "properties": {
                "config": {
                    "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRuleMatchConfig:OrganizationSecurityPolicyRuleMatchConfig",
                    "description": "The configuration options for matching the rule.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the rule.\n"
                },
                "expr": {
                    "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRuleMatchExpr:OrganizationSecurityPolicyRuleMatchExpr",
                    "description": "User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.\nStructure is documented below.\n"
                },
                "versionedExpr": {
                    "type": "string",
                    "description": "Preconfigured versioned expression. For organization security policy rules,\nthe only supported type is \"SRC_IPS_V1\".\n**NOTE** : 'FIREWALL' type is deprecated. Please use 'google_compute_firewall_policy_rule' resource instead.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/OrganizationSecurityPolicyRuleMatchConfig:OrganizationSecurityPolicyRuleMatchConfig": {
            "properties": {
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional, Beta)\nDestination IP address range in CIDR format. Required for EGRESS rules.\nThis field may only be specified when versionedExpr is set to FIREWALL.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRuleMatchConfigLayer4Config:OrganizationSecurityPolicyRuleMatchConfigLayer4Config"
                    },
                    "description": "(Optional, Beta)\nPairs of IP protocols and ports that the rule should match.\nThis field may only be specified when versionedExpr is set to FIREWALL.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedMatchConfigLayer4Config\"\" pulumi-lang-dotnet=\"\"NestedMatchConfigLayer4Config\"\" pulumi-lang-go=\"\"nestedMatchConfigLayer4Config\"\" pulumi-lang-python=\"\"nested_match_config_layer4_config\"\" pulumi-lang-yaml=\"\"nestedMatchConfigLayer4Config\"\" pulumi-lang-java=\"\"nestedMatchConfigLayer4Config\"\" pulumi-lang-hcl=\"\"nested_match_config_layer4_config\"\"\u003e\"nestedMatchConfigLayer4Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Config`\" pulumi-lang-dotnet=\"`Layer4Config`\" pulumi-lang-go=\"`layer4Config`\" pulumi-lang-python=\"`layer4_config`\" pulumi-lang-yaml=\"`layer4Config`\" pulumi-lang-java=\"`layer4Config`\" pulumi-lang-hcl=\"`layer4_config`\"\u003e`layer4Config`\u003c/span\u003e block supports:\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source IP address range in CIDR format. Required for\nINGRESS rules.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/OrganizationSecurityPolicyRuleMatchConfigLayer4Config:OrganizationSecurityPolicyRuleMatchConfigLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "The IP protocol to which this rule applies. The protocol\ntype is required when creating a firewall rule.\nThis value can either be one of the following well\nknown protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp),\nor the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "required": [
                "ipProtocol"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyRuleMatchExpr:OrganizationSecurityPolicyRuleMatchExpr": {
            "properties": {
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfig:OrganizationSecurityPolicyRulePreconfiguredWafConfig": {
            "properties": {
                "exclusions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusion:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusion"
                    },
                    "description": "An exclusion to apply during preconfigured WAF evaluation.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusion:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusion": {
            "properties": {
                "requestCookies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky"
                    },
                    "description": "Request cookie whose value will be excluded from inspection during preconfigured WAF evaluation.\nStructure is documented below.\n"
                },
                "requestHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader"
                    },
                    "description": "Request header whose value will be excluded from inspection during preconfigured WAF evaluation.\nStructure is documented below.\n"
                },
                "requestQueryParams": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam"
                    },
                    "description": "Request query parameter whose value will be excluded from inspection during preconfigured WAF evaluation.\nNote that the parameter can be in the query string or in the POST body.\nStructure is documented below.\n"
                },
                "requestUris": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri"
                    },
                    "description": "Request URI from the request line to be excluded from inspection during preconfigured WAF evaluation.\nWhen specifying this field, the query or fragment part should be excluded.\nStructure is documented below.\n"
                },
                "targetRuleIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion.\nIf omitted, it refers to all the rule IDs under the WAF rule set.\n"
                },
                "targetRuleSet": {
                    "type": "string",
                    "description": "Target WAF rule set to apply the preconfigured WAF exclusion.\n"
                }
            },
            "type": "object",
            "required": [
                "targetRuleSet"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri:OrganizationSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/OrganizationSecurityPolicyRuleRedirectOptions:OrganizationSecurityPolicyRuleRedirectOptions": {
            "properties": {
                "target": {
                    "type": "string",
                    "description": "Target for the redirect action. This is required if the type is EXTERNAL_302.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the redirect action. For organization security policies, only EXTERNAL_302 is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/PacketMirroringCollectorIlb:PacketMirroringCollectorIlb": {
            "properties": {
                "url": {
                    "type": "string",
                    "description": "The URL of the forwarding rule.\n"
                }
            },
            "type": "object",
            "required": [
                "url"
            ]
        },
        "gcp:compute/PacketMirroringFilter:PacketMirroringFilter": {
            "properties": {
                "cidrRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IP CIDR ranges that apply as a filter on the source (ingress) or\ndestination (egress) IP in the IP header. Only IPv4 is supported.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "Direction of traffic to mirror.\nDefault value is `BOTH`.\nPossible values are: `INGRESS`, `EGRESS`, `BOTH`.\n"
                },
                "ipProtocols": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Possible IP protocols including tcp, udp, icmp and esp\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/PacketMirroringMirroredResources:PacketMirroringMirroredResources": {
            "properties": {
                "instances": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/PacketMirroringMirroredResourcesInstance:PacketMirroringMirroredResourcesInstance"
                    },
                    "description": "All the listed instances will be mirrored.  Specify at most 50.\nStructure is documented below.\n"
                },
                "subnetworks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/PacketMirroringMirroredResourcesSubnetwork:PacketMirroringMirroredResourcesSubnetwork"
                    },
                    "description": "All instances in one of these subnetworks will be mirrored.\nStructure is documented below.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "All instances with these tags will be mirrored.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/PacketMirroringMirroredResourcesInstance:PacketMirroringMirroredResourcesInstance": {
            "properties": {
                "url": {
                    "type": "string",
                    "description": "The URL of the instances where this rule should be active.\n"
                }
            },
            "type": "object",
            "required": [
                "url"
            ]
        },
        "gcp:compute/PacketMirroringMirroredResourcesSubnetwork:PacketMirroringMirroredResourcesSubnetwork": {
            "properties": {
                "url": {
                    "type": "string",
                    "description": "The URL of the subnetwork where this rule should be active.\n"
                }
            },
            "type": "object",
            "required": [
                "url"
            ]
        },
        "gcp:compute/PacketMirroringNetwork:PacketMirroringNetwork": {
            "properties": {
                "url": {
                    "type": "string",
                    "description": "The full\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eURL of the network where this rule is active.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "url"
            ]
        },
        "gcp:compute/PerInstanceConfigPreservedState:PerInstanceConfigPreservedState": {
            "properties": {
                "disks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/PerInstanceConfigPreservedStateDisk:PerInstanceConfigPreservedStateDisk"
                    },
                    "description": "Stateful disks for the instance.\nStructure is documented below.\n"
                },
                "externalIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/PerInstanceConfigPreservedStateExternalIp:PerInstanceConfigPreservedStateExternalIp"
                    },
                    "description": "Preserved external IPs defined for this instance. This map is keyed with the name of the network interface.\nStructure is documented below.\n"
                },
                "internalIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/PerInstanceConfigPreservedStateInternalIp:PerInstanceConfigPreservedStateInternalIp"
                    },
                    "description": "Preserved internal IPs defined for this instance. This map is keyed with the name of the network interface.\nStructure is documented below.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Preserved metadata defined for this instance. This is a list of key-\u003evalue pairs.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/PerInstanceConfigPreservedStateDisk:PerInstanceConfigPreservedStateDisk": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": "A value that prescribes what should happen to the stateful disk when the VM instance is deleted.\nThe available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`.\n`NEVER` - detach the disk when the VM is deleted, but do not delete the disk.\n`ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently\ndeleted from the instance group.\nDefault value is `NEVER`.\nPossible values are: `NEVER`, `ON_PERMANENT_INSTANCE_DELETION`.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The mode of the disk.\nDefault value is `READ_WRITE`.\nPossible values are: `READ_ONLY`, `READ_WRITE`.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The URI of an existing persistent disk to attach under the specified device-name in the format\n`projects/project-id/zones/zone/disks/disk-name`.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceName",
                "source"
            ]
        },
        "gcp:compute/PerInstanceConfigPreservedStateExternalIp:PerInstanceConfigPreservedStateExternalIp": {
            "properties": {
                "autoDelete": {
                    "type": "string",
                    "description": "These stateful IPs will never be released during autohealing, update or VM instance recreate operations. This flag is used to configure if the IP reservation should be deleted after it is no longer used by the group, e.g. when the given instance or the whole group is deleted.\nDefault value is `NEVER`.\nPossible values are: `NEVER`, `ON_PERMANENT_INSTANCE_DELETION`.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "ipAddress": {
                    "$ref": "#/types/gcp:compute/PerInstanceConfigPreservedStateExternalIpIpAddress:PerInstanceConfigPreservedStateExternalIpIpAddress",
                    "description": "Ip address representation\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "interfaceName"
            ]
        },
        "gcp:compute/PerInstanceConfigPreservedStateExternalIpIpAddress:PerInstanceConfigPreservedStateExternalIpIpAddress": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The URL of the reservation for this IP address.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/PerInstanceConfigPreservedStateInternalIp:PerInstanceConfigPreservedStateInternalIp": {
            "properties": {
                "autoDelete": {
                    "type": "string",
                    "description": "These stateful IPs will never be released during autohealing, update or VM instance recreate operations. This flag is used to configure if the IP reservation should be deleted after it is no longer used by the group, e.g. when the given instance or the whole group is deleted.\nDefault value is `NEVER`.\nPossible values are: `NEVER`, `ON_PERMANENT_INSTANCE_DELETION`.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "ipAddress": {
                    "$ref": "#/types/gcp:compute/PerInstanceConfigPreservedStateInternalIpIpAddress:PerInstanceConfigPreservedStateInternalIpIpAddress",
                    "description": "Ip address representation\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "interfaceName"
            ]
        },
        "gcp:compute/PerInstanceConfigPreservedStateInternalIpIpAddress:PerInstanceConfigPreservedStateInternalIpIpAddress": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The URL of the reservation for this IP address.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/PreviewFeatureRolloutOperation:PreviewFeatureRolloutOperation": {
            "properties": {
                "rolloutInput": {
                    "$ref": "#/types/gcp:compute/PreviewFeatureRolloutOperationRolloutInput:PreviewFeatureRolloutOperationRolloutInput",
                    "description": "The input for the rollout operation.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/PreviewFeatureRolloutOperationRolloutInput:PreviewFeatureRolloutOperationRolloutInput": {
            "properties": {
                "predefinedRolloutPlan": {
                    "type": "string",
                    "description": "Predefined rollout plans.\nPossible values are: `ROLLOUT_PLAN_FAST_ROLLOUT`.\n"
                }
            },
            "type": "object",
            "required": [
                "predefinedRolloutPlan"
            ]
        },
        "gcp:compute/PublicDelegatedPrefixPublicDelegatedSubPrefix:PublicDelegatedPrefixPublicDelegatedSubPrefix": {
            "properties": {
                "allocatablePrefixLength": {
                    "type": "integer",
                    "description": "The allocatable prefix length supported by this public delegated prefix. This field is optional and cannot be set for prefixes in DELEGATION mode. It cannot be set for IPv4 prefixes either, and it always defaults to 32.\n"
                },
                "delegateeProject": {
                    "type": "string",
                    "description": "Name of the project scoping this PublicDelegatedSubPrefix.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\n"
                },
                "enableEnhancedIpv4Allocation": {
                    "type": "boolean",
                    "description": "(Output)\nWhether this PublicDelegatedSubPrefix supports enhanced IPv4 allocations.\nApplicable for IPv4 sub-PDPs only.\n"
                },
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP address range, in CIDR format, represented by this public delegated prefix.\n"
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "(Output)\nThe internet access type for IPv6 Public Delegated Prefixes. Inherited\nfrom parent prefix and can be one of following:\n* EXTERNAL: The prefix will be announced to the internet. All children\nPDPs will have access type as EXTERNAL.\n* INTERNAL: The prefix won’t be announced to the internet. Prefix will\nbe used privately within Google Cloud. All children PDPs will have\naccess type as INTERNAL.\n"
                },
                "isAddress": {
                    "type": "boolean",
                    "description": "Whether the sub prefix is delegated for address creation.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Specifies the mode of this IPv6 PDP. MODE must be one of:\n* DELEGATION\n* EXTERNAL_IPV6_FORWARDING_RULE_CREATION\n* EXTERNAL_IPV6_SUBNETWORK_CREATION\n* INTERNAL_IPV6_SUBNETWORK_CREATION\nPossible values are: `DELEGATION`, `EXTERNAL_IPV6_FORWARDING_RULE_CREATION`, `EXTERNAL_IPV6_SUBNETWORK_CREATION`, `INTERNAL_IPV6_SUBNETWORK_CREATION`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the resource. The name must be 1-63 characters long, and\ncomply with RFC1035. Specifically, the name must be 1-63 characters\nlong and match the regular expression `a-z?`\nwhich means the first character must be a lowercase letter, and all\nfollowing characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.\n"
                },
                "region": {
                    "type": "string",
                    "description": "A region where the prefix will reside.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the sub public delegated prefix.\nPossible values are: `INITIALIZING`, `READY_TO_ANNOUNCE`, `ANNOUNCED`, `DELETING`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enableEnhancedIpv4Allocation",
                        "ipv6AccessType"
                    ]
                }
            }
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicy:RegionAutoscalerAutoscalingPolicy": {
            "properties": {
                "cooldownPeriod": {
                    "type": "integer",
                    "description": "The number of seconds that the autoscaler should wait before it\nstarts collecting information from a new instance. This prevents\nthe autoscaler from collecting information when the instance is\ninitializing, during which the collected usage would not be\nreliable. The default time autoscaler waits is 60 seconds.\nVirtual machine initialization times might vary because of\nnumerous factors. We recommend that you test how long an\ninstance may take to initialize. To do this, create an instance\nand time the startup process.\n"
                },
                "cpuUtilization": {
                    "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicyCpuUtilization:RegionAutoscalerAutoscalingPolicyCpuUtilization",
                    "description": "Defines the CPU utilization policy that allows the autoscaler to\nscale based on the average CPU utilization of a managed instance\ngroup.\nStructure is documented below.\n"
                },
                "loadBalancingUtilization": {
                    "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicyLoadBalancingUtilization:RegionAutoscalerAutoscalingPolicyLoadBalancingUtilization",
                    "description": "Configuration parameters of autoscaling based on a load balancer.\nStructure is documented below.\n"
                },
                "maxReplicas": {
                    "type": "integer",
                    "description": "The maximum number of instances that the autoscaler can scale up\nto. This is required when creating or updating an autoscaler. The\nmaximum number of replicas should not be lower than minimal number\nof replicas.\n"
                },
                "metrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicyMetric:RegionAutoscalerAutoscalingPolicyMetric"
                    },
                    "description": "Configuration parameters of autoscaling based on a custom metric.\nStructure is documented below.\n"
                },
                "minReplicas": {
                    "type": "integer",
                    "description": "The minimum number of replicas that the autoscaler can scale down\nto. This cannot be less than 0. If not provided, autoscaler will\nchoose a default value depending on maximum number of instances\nallowed.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Defines operating mode for this policy.\n"
                },
                "scaleDownControl": {
                    "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicyScaleDownControl:RegionAutoscalerAutoscalingPolicyScaleDownControl",
                    "description": "(Optional, Beta)\nDefines scale down controls to reduce the risk of response latency\nand outages due to abrupt scale-in events\nStructure is documented below.\n"
                },
                "scaleInControl": {
                    "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicyScaleInControl:RegionAutoscalerAutoscalingPolicyScaleInControl",
                    "description": "Defines scale in controls to reduce the risk of response latency\nand outages due to abrupt scale-in events\nStructure is documented below.\n"
                },
                "scalingSchedules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicyScalingSchedule:RegionAutoscalerAutoscalingPolicyScalingSchedule"
                    },
                    "description": "Scaling schedules defined for an autoscaler. Multiple schedules can be set on an autoscaler and they can overlap.\nStructure is documented below.\n"
                },
                "stabilizationPeriod": {
                    "type": "integer",
                    "description": "The number of seconds that the autoscaler waits for load stabilization\nbefore making scale-in decisions.\nThis might appear as a delay in scaling in but it is an important mechanism\nfor your application to not have fluctuating size due to short term load\nfluctuations.\n"
                }
            },
            "type": "object",
            "required": [
                "maxReplicas",
                "minReplicas"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpuUtilization",
                        "maxReplicas",
                        "minReplicas"
                    ]
                }
            }
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicyCpuUtilization:RegionAutoscalerAutoscalingPolicyCpuUtilization": {
            "properties": {
                "predictiveMethod": {
                    "type": "string",
                    "description": "Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are:\n- NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics.\n- OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.\n"
                },
                "target": {
                    "type": "number",
                    "description": "The target CPU utilization that the autoscaler should maintain.\nMust be a float value in the range (0, 1]. If not specified, the\ndefault is 0.6.\nIf the CPU level is below the target utilization, the autoscaler\nscales down the number of instances until it reaches the minimum\nnumber of instances you specified or until the average CPU of\nyour instances reaches the target utilization.\nIf the average CPU is above the target utilization, the autoscaler\nscales up until it reaches the maximum number of instances you\nspecified or until the average utilization reaches the target\nutilization.\n"
                }
            },
            "type": "object",
            "required": [
                "target"
            ]
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicyLoadBalancingUtilization:RegionAutoscalerAutoscalingPolicyLoadBalancingUtilization": {
            "properties": {
                "target": {
                    "type": "number",
                    "description": "Fraction of backend capacity utilization (set in HTTP(s) load\nbalancing configuration) that autoscaler should maintain. Must\nbe a positive float value. If not defined, the default is 0.8.\n"
                }
            },
            "type": "object",
            "required": [
                "target"
            ]
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicyMetric:RegionAutoscalerAutoscalingPolicyMetric": {
            "properties": {
                "filter": {
                    "type": "string",
                    "description": "A filter string to be used as the filter string for\na Stackdriver Monitoring TimeSeries.list API call.\nThis filter is used to select a specific TimeSeries for\nthe purpose of autoscaling and to determine whether the metric\nis exporting per-instance or per-group data.\nYou can only use the AND operator for joining selectors.\nYou can only use direct equality comparison operator (=) without\nany functions for each selector.\nYou can specify the metric in both the filter string and in the\nmetric field. However, if specified in both places, the metric must\nbe identical.\nThe monitored resource type determines what kind of values are\nexpected for the metric. If it is a gce_instance, the autoscaler\nexpects the metric to include a separate TimeSeries for each\ninstance in a group. In such a case, you cannot filter on resource\nlabels.\nIf the resource type is any other value, the autoscaler expects\nthis metric to contain values that apply to the entire autoscaled\ninstance group and resource label filtering can be performed to\npoint autoscaler at the correct TimeSeries to scale upon.\nThis is called a per-group metric for the purpose of autoscaling.\nIf not specified, the type defaults to gce_instance.\nYou should provide a filter that is selective enough to pick just\none TimeSeries for the autoscaled group or for each of the instances\n(if you are using\u003cspan pulumi-lang-nodejs=\" gceInstance \" pulumi-lang-dotnet=\" GceInstance \" pulumi-lang-go=\" gceInstance \" pulumi-lang-python=\" gce_instance \" pulumi-lang-yaml=\" gceInstance \" pulumi-lang-java=\" gceInstance \" pulumi-lang-hcl=\" gce_instance \"\u003e gceInstance \u003c/span\u003eresource type). If multiple\nTimeSeries are returned upon the query execution, the autoscaler\nwill sum their respective values to obtain its scaling value.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The identifier (type) of the Stackdriver Monitoring metric.\nThe metric cannot have negative values.\nThe metric must have a value type of INT64 or DOUBLE.\n"
                },
                "singleInstanceAssignment": {
                    "type": "number",
                    "description": "If scaling is based on a per-group metric value that represents the\ntotal amount of work to be done or resource usage, set this value to\nan amount assigned for a single instance of the scaled group.\nThe autoscaler will keep the number of instances proportional to the\nvalue of this metric, the metric itself should not change value due\nto group resizing.\nFor example, a good metric to use with the target is\n`pubsub.googleapis.com/subscription/num_undelivered_messages`\nor a custom metric exporting the total number of requests coming to\nyour instances.\nA bad example would be a metric exporting an average or median\nlatency, since this value can't include a chunk assignable to a\nsingle instance, it could be better used with\u003cspan pulumi-lang-nodejs=\" utilizationTarget\n\" pulumi-lang-dotnet=\" UtilizationTarget\n\" pulumi-lang-go=\" utilizationTarget\n\" pulumi-lang-python=\" utilization_target\n\" pulumi-lang-yaml=\" utilizationTarget\n\" pulumi-lang-java=\" utilizationTarget\n\" pulumi-lang-hcl=\" utilization_target\n\"\u003e utilizationTarget\n\u003c/span\u003einstead.\n"
                },
                "target": {
                    "type": "number",
                    "description": "The target value of the metric that autoscaler should\nmaintain. This must be a positive value. A utilization\nmetric scales number of virtual machines handling requests\nto increase or decrease proportionally to the metric.\nFor example, a good metric to use as a utilizationTarget is\nwww.googleapis.com/compute/instance/network/received_bytes_count.\nThe autoscaler will work to keep this value constant for each\nof the instances.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Defines how target utilization value is expressed for a\nStackdriver Monitoring metric.\nPossible values are: `GAUGE`, `DELTA_PER_SECOND`, `DELTA_PER_MINUTE`.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicyScaleDownControl:RegionAutoscalerAutoscalingPolicyScaleDownControl": {
            "properties": {
                "maxScaledDownReplicas": {
                    "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicyScaleDownControlMaxScaledDownReplicas:RegionAutoscalerAutoscalingPolicyScaleDownControlMaxScaledDownReplicas",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "timeWindowSec": {
                    "type": "integer",
                    "description": "How long back autoscaling should look when computing recommendations\nto include directives regarding slower scale down, as described above.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicyScaleDownControlMaxScaledDownReplicas:RegionAutoscalerAutoscalingPolicyScaleDownControlMaxScaledDownReplicas": {
            "properties": {
                "fixed": {
                    "type": "integer",
                    "description": "Specifies a fixed number of VM instances. This must be a positive\ninteger.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "Specifies a percentage of instances between 0 to 100%, inclusive.\nFor example, specify 80 for 80%.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicyScaleInControl:RegionAutoscalerAutoscalingPolicyScaleInControl": {
            "properties": {
                "maxScaledInReplicas": {
                    "$ref": "#/types/gcp:compute/RegionAutoscalerAutoscalingPolicyScaleInControlMaxScaledInReplicas:RegionAutoscalerAutoscalingPolicyScaleInControlMaxScaledInReplicas",
                    "description": "A nested object resource.\nStructure is documented below.\n"
                },
                "timeWindowSec": {
                    "type": "integer",
                    "description": "How long back autoscaling should look when computing recommendations\nto include directives regarding slower scale down, as described above.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicyScaleInControlMaxScaledInReplicas:RegionAutoscalerAutoscalingPolicyScaleInControlMaxScaledInReplicas": {
            "properties": {
                "fixed": {
                    "type": "integer",
                    "description": "Specifies a fixed number of VM instances. This must be a positive\ninteger.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "Specifies a percentage of instances between 0 to 100%, inclusive.\nFor example, specify 80 for 80%.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionAutoscalerAutoscalingPolicyScalingSchedule:RegionAutoscalerAutoscalingPolicyScalingSchedule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A description of a scaling schedule.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "A boolean value that specifies if a scaling schedule can influence autoscaler recommendations. If set to true, then a scaling schedule has no effect.\n"
                },
                "durationSec": {
                    "type": "integer",
                    "description": "The duration of time intervals (in seconds) for which this scaling schedule will be running. The minimum allowed value is 300.\n"
                },
                "minRequiredReplicas": {
                    "type": "integer",
                    "description": "Minimum number of VM instances that autoscaler will recommend in time intervals starting according to schedule.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "The start timestamps of time intervals when this scaling schedule should provide a scaling signal. This field uses the extended cron format (with an optional year field).\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "The time zone to be used when interpreting the schedule. The value of this field must be a time zone name from the tz database: http://en.wikipedia.org/wiki/Tz_database.\n"
                }
            },
            "type": "object",
            "required": [
                "durationSec",
                "minRequiredReplicas",
                "name",
                "schedule"
            ]
        },
        "gcp:compute/RegionBackendBucketIamBindingCondition:RegionBackendBucketIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/RegionBackendBucketIamMemberCondition:RegionBackendBucketIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/RegionBackendServiceBackend:RegionBackendServiceBackend": {
            "properties": {
                "balancingMode": {
                    "type": "string",
                    "description": "Specifies the balancing mode for this backend.\nSee the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode)\nfor an explanation of load balancing modes.\nDefault value is `UTILIZATION`.\nPossible values are: `UTILIZATION`, `RATE`, `CONNECTION`, `CUSTOM_METRICS`.\n"
                },
                "capacityScaler": {
                    "type": "number",
                    "description": "A multiplier applied to the group's maximum servicing capacity\n(based on UTILIZATION, RATE or CONNECTION).\n~\u003e**NOTE**: This field cannot be set for\nINTERNAL region backend services (default loadBalancingScheme),\nbut is required for non-INTERNAL backend service. The total\u003cspan pulumi-lang-nodejs=\"\ncapacityScaler \" pulumi-lang-dotnet=\"\nCapacityScaler \" pulumi-lang-go=\"\ncapacityScaler \" pulumi-lang-python=\"\ncapacity_scaler \" pulumi-lang-yaml=\"\ncapacityScaler \" pulumi-lang-java=\"\ncapacityScaler \" pulumi-lang-hcl=\"\ncapacity_scaler \"\u003e\ncapacityScaler \u003c/span\u003efor all backends must be non-zero.\nA setting of 0 means the group is completely drained, offering\n0% of its available Capacity. Valid range is [0.0,1.0].\n"
                },
                "customMetrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionBackendServiceBackendCustomMetric:RegionBackendServiceBackendCustomMetric"
                    },
                    "description": "The set of custom metrics that are used for \u003ccode\u003eCUSTOM_METRICS\u003c/code\u003e BalancingMode.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\nProvide this property when you create the resource.\n"
                },
                "failover": {
                    "type": "boolean",
                    "description": "This field designates whether this is a failover backend. More\nthan one failover backend can be configured for a given RegionBackendService.\n"
                },
                "group": {
                    "type": "string",
                    "description": "The fully-qualified URL of an Instance Group or Network Endpoint\nGroup resource. In case of instance group this defines the list\nof instances that serve traffic. Member virtual machine\ninstances from each instance group must live in the same zone as\nthe instance group itself. No two backends in a backend service\nare allowed to use same Instance Group resource.\nFor Network Endpoint Groups this defines list of endpoints. All\nendpoints of Network Endpoint Group must be hosted on instances\nlocated in the same zone as the Network Endpoint Group.\nBackend services cannot mix Instance Group and\nNetwork Endpoint Group backends.\nWhen the \u003cspan pulumi-lang-nodejs=\"`loadBalancingScheme`\" pulumi-lang-dotnet=\"`LoadBalancingScheme`\" pulumi-lang-go=\"`loadBalancingScheme`\" pulumi-lang-python=\"`load_balancing_scheme`\" pulumi-lang-yaml=\"`loadBalancingScheme`\" pulumi-lang-java=\"`loadBalancingScheme`\" pulumi-lang-hcl=\"`load_balancing_scheme`\"\u003e`loadBalancingScheme`\u003c/span\u003e is INTERNAL, only instance groups\nare supported.\nNote that you must specify an Instance Group or Network Endpoint\nGroup resource using the fully-qualified URL, rather than a\npartial URL.\n"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections for the group. Can\nbe used with either CONNECTION or UTILIZATION balancing modes.\nCannot be set for INTERNAL backend services.\nFor CONNECTION mode, either maxConnections or one\nof maxConnectionsPerInstance or maxConnectionsPerEndpoint,\nas appropriate for group type, must be set.\n"
                },
                "maxConnectionsPerEndpoint": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections that a single backend\nnetwork endpoint can handle. Cannot be set\nfor INTERNAL backend services.\nThis is used to calculate the capacity of the group. Can be\nused in either CONNECTION or UTILIZATION balancing modes. For\nCONNECTION mode, either maxConnections or\nmaxConnectionsPerEndpoint must be set.\n"
                },
                "maxConnectionsPerInstance": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections that a single\nbackend instance can handle. Cannot be set for INTERNAL backend\nservices.\nThis is used to calculate the capacity of the group.\nCan be used in either CONNECTION or UTILIZATION balancing modes.\nFor CONNECTION mode, either maxConnections or\nmaxConnectionsPerInstance must be set.\n"
                },
                "maxInFlightRequests": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nDefines a maximum number of in-flight requests for the whole NEG\nor instance group. Not available if backend's balancingMode is RATE\nor CONNECTION.\n"
                },
                "maxInFlightRequestsPerEndpoint": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nDefines a maximum number of in-flight requests for a single endpoint.\nNot available if backend's balancingMode is RATE or CONNECTION.\n"
                },
                "maxInFlightRequestsPerInstance": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nDefines a maximum number of in-flight requests for a single VM.\nNot available if backend's balancingMode is RATE or CONNECTION.\n"
                },
                "maxRate": {
                    "type": "integer",
                    "description": "The max requests per second (RPS) of the group. Cannot be set\nfor INTERNAL backend services.\nCan be used with either RATE or UTILIZATION balancing modes,\nbut required if RATE mode. Either maxRate or one\nof maxRatePerInstance or maxRatePerEndpoint, as appropriate for\ngroup type, must be set.\n"
                },
                "maxRatePerEndpoint": {
                    "type": "number",
                    "description": "The max requests per second (RPS) that a single backend network\nendpoint can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerEndpoint must be set. Cannot be set\nfor INTERNAL backend services.\n"
                },
                "maxRatePerInstance": {
                    "type": "number",
                    "description": "The max requests per second (RPS) that a single backend\ninstance can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerInstance must be set. Cannot be set\nfor INTERNAL backend services.\n"
                },
                "maxUtilization": {
                    "type": "number",
                    "description": "Used when balancingMode is UTILIZATION. This ratio defines the\nCPU utilization target for the group. Valid range is [0.0, 1.0].\nCannot be set for INTERNAL backend services.\n"
                },
                "trafficDuration": {
                    "type": "string",
                    "description": "(Optional, Beta)\nThis field specifies how long a connection should be kept alive for:\n- LONG: Most of the requests are expected to take more than multiple\nseconds to finish.\n- SHORT: Most requests are expected to finish with a sub-second latency.\nPossible values are: `LONG`, `SHORT`.\n"
                }
            },
            "type": "object",
            "required": [
                "group"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "failover",
                        "group",
                        "maxInFlightRequests",
                        "maxInFlightRequestsPerEndpoint",
                        "maxInFlightRequestsPerInstance"
                    ]
                }
            }
        },
        "gcp:compute/RegionBackendServiceBackendCustomMetric:RegionBackendServiceBackendCustomMetric": {
            "properties": {
                "dryRun": {
                    "type": "boolean",
                    "description": "If true, the metric data is not used for load balancing.\n"
                },
                "maxUtilization": {
                    "type": "number",
                    "description": "Optional parameter to define a target utilization for the Custom Metrics\nbalancing mode. The valid range is \u003ccode\u003e[0.0, 1.0]\u003c/code\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of a custom utilization signal. The name must be 1-64 characters\nlong and match the regular expression a-z? which\nmeans the first character must be a lowercase letter, and all following\ncharacters must be a dash, period, underscore, lowercase letter, or\ndigit, except the last character, which cannot be a dash, period, or\nunderscore. For usage guidelines, see Custom Metrics balancing mode. This\nfield can only be used for a global or regional backend service with the\nloadBalancingScheme set to \u003ccode\u003eEXTERNAL_MANAGED\u003c/code\u003e,\n\u003ccode\u003eINTERNAL_MANAGED\u003c/code\u003e \u003ccode\u003eINTERNAL_SELF_MANAGED\u003c/code\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "dryRun",
                "name"
            ]
        },
        "gcp:compute/RegionBackendServiceCdnPolicy:RegionBackendServiceCdnPolicy": {
            "properties": {
                "cacheKeyPolicy": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceCdnPolicyCacheKeyPolicy:RegionBackendServiceCdnPolicyCacheKeyPolicy",
                    "description": "The CacheKeyPolicy for this CdnPolicy.\nStructure is documented below.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this backend.\nThe possible values are: USE_ORIGIN_HEADERS, FORCE_CACHE_ALL and CACHE_ALL_STATIC\nPossible values are: `USE_ORIGIN_HEADERS`, `FORCE_CACHE_ALL`, `CACHE_ALL_STATIC`.\n"
                },
                "clientTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin.\n"
                },
                "defaultTtl": {
                    "type": "integer",
                    "description": "Specifies the default TTL for cached content served by this origin for responses\nthat do not have an existing valid TTL (max-age or s-max-age).\n"
                },
                "maxTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply fine-grained caching for common errors or redirects.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionBackendServiceCdnPolicyNegativeCachingPolicy:RegionBackendServiceCdnPolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching must be enabled to configure negativeCachingPolicy.\nOmitting the policy and leaving negativeCaching enabled will use Cloud CDN's default cache TTLs.\nStructure is documented below.\n"
                },
                "serveWhileStale": {
                    "type": "integer",
                    "description": "Serve existing content from the cache (if available) when revalidating content with the origin, or when an error is encountered when refreshing the cache.\n"
                },
                "signedUrlCacheMaxAgeSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the response to a signed URL request\nwill be considered fresh, defaults to 1hr (3600s). After this\ntime period, the response will be revalidated before\nbeing served.\nWhen serving responses to signed URL requests, Cloud CDN will\ninternally behave as though all responses from this backend had a\n\"Cache-Control: public, max-age=[TTL]\" header, regardless of any\nexisting Cache-Control header. The actual headers served in\nresponses will not be altered.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cacheMode",
                        "clientTtl",
                        "defaultTtl",
                        "maxTtl",
                        "negativeCaching",
                        "serveWhileStale"
                    ]
                }
            }
        },
        "gcp:compute/RegionBackendServiceCdnPolicyCacheKeyPolicy:RegionBackendServiceCdnPolicyCacheKeyPolicy": {
            "properties": {
                "includeHost": {
                    "type": "boolean",
                    "description": "If true requests to different hosts will be cached separately.\n"
                },
                "includeNamedCookies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of cookies to include in cache keys.\n"
                },
                "includeProtocol": {
                    "type": "boolean",
                    "description": "If true, http and https requests will be cached separately.\n"
                },
                "includeQueryString": {
                    "type": "boolean",
                    "description": "If true, include query string parameters in the cache key\naccording to\u003cspan pulumi-lang-nodejs=\" queryStringWhitelist \" pulumi-lang-dotnet=\" QueryStringWhitelist \" pulumi-lang-go=\" queryStringWhitelist \" pulumi-lang-python=\" query_string_whitelist \" pulumi-lang-yaml=\" queryStringWhitelist \" pulumi-lang-java=\" queryStringWhitelist \" pulumi-lang-hcl=\" query_string_whitelist \"\u003e queryStringWhitelist \u003c/span\u003eand\nquery_string_blacklist. If neither is set, the entire query\nstring will be included.\nIf false, the query string will be excluded from the cache\nkey entirely.\n"
                },
                "queryStringBlacklists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to exclude in cache keys.\nAll other parameters will be included. Either specify\u003cspan pulumi-lang-nodejs=\"\nqueryStringWhitelist \" pulumi-lang-dotnet=\"\nQueryStringWhitelist \" pulumi-lang-go=\"\nqueryStringWhitelist \" pulumi-lang-python=\"\nquery_string_whitelist \" pulumi-lang-yaml=\"\nqueryStringWhitelist \" pulumi-lang-java=\"\nqueryStringWhitelist \" pulumi-lang-hcl=\"\nquery_string_whitelist \"\u003e\nqueryStringWhitelist \u003c/span\u003eor query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.\n"
                },
                "queryStringWhitelists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys.\nAll other parameters will be excluded. Either specify\u003cspan pulumi-lang-nodejs=\"\nqueryStringWhitelist \" pulumi-lang-dotnet=\"\nQueryStringWhitelist \" pulumi-lang-go=\"\nqueryStringWhitelist \" pulumi-lang-python=\"\nquery_string_whitelist \" pulumi-lang-yaml=\"\nqueryStringWhitelist \" pulumi-lang-java=\"\nqueryStringWhitelist \" pulumi-lang-hcl=\"\nquery_string_whitelist \"\u003e\nqueryStringWhitelist \u003c/span\u003eor query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceCdnPolicyNegativeCachingPolicy:RegionBackendServiceCdnPolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 308, 404, 405, 410, 421, 451 and 501\ncan be specified as values, and you cannot specify a status code more than once.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nThe TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s\n(30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceCircuitBreakers:RegionBackendServiceCircuitBreakers": {
            "properties": {
                "connectTimeout": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceCircuitBreakersConnectTimeout:RegionBackendServiceCircuitBreakersConnectTimeout",
                    "description": "(Optional, Beta)\nThe timeout for new network connections to hosts.\nStructure is documented below.\n"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "The maximum number of connections to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxPendingRequests": {
                    "type": "integer",
                    "description": "The maximum number of pending requests to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxRequests": {
                    "type": "integer",
                    "description": "The maximum number of parallel requests to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxRequestsPerConnection": {
                    "type": "integer",
                    "description": "Maximum requests for a single backend connection. This parameter\nis respected by both the HTTP/1.1 and HTTP/2 implementations. If\nnot specified, there is no limit. Setting this parameter to 1\nwill effectively disable keep alive.\n"
                },
                "maxRetries": {
                    "type": "integer",
                    "description": "The maximum number of parallel retries to the backend cluster.\nDefaults to 3.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceCircuitBreakersConnectTimeout:RegionBackendServiceCircuitBreakersConnectTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionBackendServiceConnectionTrackingPolicy:RegionBackendServiceConnectionTrackingPolicy": {
            "properties": {
                "connectionPersistenceOnUnhealthyBackends": {
                    "type": "string",
                    "description": "Specifies connection persistence when backends are unhealthy.\nIf set to `DEFAULT_FOR_PROTOCOL`, the existing connections persist on\nunhealthy backends only for connection-oriented protocols (TCP and SCTP)\nand only if the Tracking Mode is PER_CONNECTION (default tracking mode)\nor the Session Affinity is configured for 5-tuple. They do not persist\nfor UDP.\nIf set to `NEVER_PERSIST`, after a backend becomes unhealthy, the existing\nconnections on the unhealthy backend are never persisted on the unhealthy\nbackend. They are always diverted to newly selected healthy backends\n(unless all backends are unhealthy).\nIf set to `ALWAYS_PERSIST`, existing connections always persist on\nunhealthy backends regardless of protocol and session affinity. It is\ngenerally not recommended to use this mode overriding the default.\nDefault value is `DEFAULT_FOR_PROTOCOL`.\nPossible values are: `DEFAULT_FOR_PROTOCOL`, `NEVER_PERSIST`, `ALWAYS_PERSIST`.\n"
                },
                "enableStrongAffinity": {
                    "type": "boolean",
                    "description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly.\n"
                },
                "idleTimeoutSec": {
                    "type": "integer",
                    "description": "Specifies how long to keep a Connection Tracking entry while there is\nno matching traffic (in seconds).\nFor L4 ILB the minimum(default) is 10 minutes and maximum is 16 hours.\nFor NLB the minimum(default) is 60 seconds and the maximum is 16 hours.\n"
                },
                "trackingMode": {
                    "type": "string",
                    "description": "Specifies the key used for connection tracking. There are two options:\n`PER_CONNECTION`: The Connection Tracking is performed as per the\nConnection Key (default Hash Method) for the specific protocol.\n`PER_SESSION`: The Connection Tracking is performed as per the\nconfigured Session Affinity. It matches the configured Session Affinity.\nDefault value is `PER_CONNECTION`.\nPossible values are: `PER_CONNECTION`, `PER_SESSION`.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "idleTimeoutSec"
                    ]
                }
            }
        },
        "gcp:compute/RegionBackendServiceConsistentHash:RegionBackendServiceConsistentHash": {
            "properties": {
                "httpCookie": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceConsistentHashHttpCookie:RegionBackendServiceConsistentHashHttpCookie",
                    "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie\nthat will be used as the hash key for the consistent hash load\nbalancer. If the cookie is not present, it will be generated.\nThis field is applicable if the sessionAffinity is set to HTTP_COOKIE.\nStructure is documented below.\n"
                },
                "httpHeaderName": {
                    "type": "string",
                    "description": "The hash based on the value of the specified header field.\nThis field is applicable if the sessionAffinity is set to HEADER_FIELD.\n"
                },
                "minimumRingSize": {
                    "type": "integer",
                    "description": "The minimum number of virtual nodes to use for the hash ring.\nLarger ring sizes result in more granular load\ndistributions. If the number of hosts in the load balancing pool\nis larger than the ring size, each host will be assigned a single\nvirtual node.\nDefaults to 1024.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceConsistentHashHttpCookie:RegionBackendServiceConsistentHashHttpCookie": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the cookie.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to set for the cookie.\n"
                },
                "ttl": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceConsistentHashHttpCookieTtl:RegionBackendServiceConsistentHashHttpCookieTtl",
                    "description": "Lifetime of the cookie.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceConsistentHashHttpCookieTtl:RegionBackendServiceConsistentHashHttpCookieTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionBackendServiceCustomMetric:RegionBackendServiceCustomMetric": {
            "properties": {
                "dryRun": {
                    "type": "boolean",
                    "description": "If true, the metric data is not used for load balancing.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of a custom utilization signal. The name must be 1-64 characters\nlong and match the regular expression a-z? which\nmeans the first character must be a lowercase letter, and all following\ncharacters must be a dash, period, underscore, lowercase letter, or\ndigit, except the last character, which cannot be a dash, period, or\nunderscore. For usage guidelines, see Custom Metrics balancing mode. This\nfield can only be used for a global or regional backend service with the\nloadBalancingScheme set to \u003ccode\u003eEXTERNAL_MANAGED\u003c/code\u003e,\n\u003ccode\u003eINTERNAL_MANAGED\u003c/code\u003e \u003ccode\u003eINTERNAL_SELF_MANAGED\u003c/code\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "dryRun",
                "name"
            ]
        },
        "gcp:compute/RegionBackendServiceDynamicForwarding:RegionBackendServiceDynamicForwarding": {
            "properties": {
                "forwardProxy": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceDynamicForwardingForwardProxy:RegionBackendServiceDynamicForwardingForwardProxy",
                    "description": "(Optional, Beta)\nDynamic Forwarding Proxy configuration.\nStructure is documented below.\n"
                },
                "ipPortSelection": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceDynamicForwardingIpPortSelection:RegionBackendServiceDynamicForwardingIpPortSelection",
                    "description": "(Optional, Beta)\nIP:PORT based dynamic forwarding configuration.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceDynamicForwardingForwardProxy:RegionBackendServiceDynamicForwardingForwardProxy": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "(Required, Beta)\nA boolean flag enabling dynamic forwarding proxy.\n",
                    "willReplaceOnChanges": true
                },
                "proxyMode": {
                    "type": "string",
                    "description": "(Required, Beta)\nDetermines the dynamic forwarding proxy mode\nPossible values are: `DIRECT_FORWARDING`, `CLOUD_RUN`.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "proxyMode"
            ]
        },
        "gcp:compute/RegionBackendServiceDynamicForwardingIpPortSelection:RegionBackendServiceDynamicForwardingIpPortSelection": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "(Optional, Beta)\nA boolean flag enabling IP:PORT based dynamic forwarding.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceFailoverPolicy:RegionBackendServiceFailoverPolicy": {
            "properties": {
                "disableConnectionDrainOnFailover": {
                    "type": "boolean",
                    "description": "On failover or failback, this field indicates whether connection drain\nwill be honored. Setting this to true has the following effect: connections\nto the old active pool are not drained. Connections to the new active pool\nuse the timeout of 10 min (currently fixed). Setting to false has the\nfollowing effect: both old and new connections will have a drain timeout\nof 10 min.\nThis can be set to true only if the protocol is TCP.\nThe default is false.\n"
                },
                "dropTrafficIfUnhealthy": {
                    "type": "boolean",
                    "description": "This option is used only when no healthy VMs are detected in the primary\nand backup instance groups. When set to true, traffic is dropped. When\nset to false, new connections are sent across all VMs in the primary group.\nThe default is false.\n"
                },
                "failoverRatio": {
                    "type": "number",
                    "description": "The value of the field must be in [0, 1]. If the ratio of the healthy\nVMs in the primary backend is at or below this number, traffic arriving\nat the load-balanced IP will be directed to the failover backend.\nIn case where 'failoverRatio' is not set or all the VMs in the backup\nbackend are unhealthy, the traffic will be directed back to the primary\nbackend in the \"force\" mode, where traffic will be spread to the healthy\nVMs with the best effort, or to all VMs when no VM is healthy.\nThis field is only used with l4 load balancing.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "disableConnectionDrainOnFailover",
                        "dropTrafficIfUnhealthy"
                    ]
                }
            }
        },
        "gcp:compute/RegionBackendServiceHaPolicy:RegionBackendServiceHaPolicy": {
            "properties": {
                "fastIpMove": {
                    "type": "string",
                    "description": "Specifies whether fast IP move is enabled, and if so, the mechanism to achieve it.\nSupported values are:\n* `DISABLED`: Fast IP Move is disabled. You can only use the haPolicy.leader API to\nupdate the leader.\n* `GARP_RA`: Provides a method to very quickly define a new network endpoint as the\nleader. This method is faster than updating the leader using the\nhaPolicy.leader API. Fast IP move works as follows: The VM hosting the\nnetwork endpoint that should become the new leader sends either a\nGratuitous ARP (GARP) packet (IPv4) or an ICMPv6 Router Advertisement(RA)\npacket (IPv6). Google Cloud immediately but temporarily associates the\nforwarding rule IP address with that VM, and both new and in-flight packets\nare quickly delivered to that VM.\nPossible values are: `DISABLED`, `GARP_RA`.\n",
                    "willReplaceOnChanges": true
                },
                "leader": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceHaPolicyLeader:RegionBackendServiceHaPolicyLeader",
                    "description": "Selects one of the network endpoints attached to the backend NEGs of this service as the\nactive endpoint (the leader) that receives all traffic.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceHaPolicyLeader:RegionBackendServiceHaPolicyLeader": {
            "properties": {
                "backendGroup": {
                    "type": "string",
                    "description": "A fully-qualified URL of the zonal Network Endpoint Group (NEG) that the leader is\nattached to.\n"
                },
                "networkEndpoint": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceHaPolicyLeaderNetworkEndpoint:RegionBackendServiceHaPolicyLeaderNetworkEndpoint",
                    "description": "The network endpoint within the leader.backendGroup that is designated as the leader.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceHaPolicyLeaderNetworkEndpoint:RegionBackendServiceHaPolicyLeaderNetworkEndpoint": {
            "properties": {
                "instance": {
                    "type": "string",
                    "description": "The name of the VM instance of the leader network endpoint. The instance must\nalready be attached to the NEG specified in the haPolicy.leader.backendGroup.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceIamBindingCondition:RegionBackendServiceIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/RegionBackendServiceIamMemberCondition:RegionBackendServiceIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/RegionBackendServiceIap:RegionBackendServiceIap": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.\n"
                },
                "oauth2ClientId": {
                    "type": "string",
                    "description": "OAuth2 Client ID for IAP\n"
                },
                "oauth2ClientSecret": {
                    "type": "string",
                    "description": "OAuth2 Client Secret for IAP\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                },
                "oauth2ClientSecretSha256": {
                    "type": "string",
                    "description": "(Output)\nOAuth2 Client Secret SHA-256 for IAP\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "oauth2ClientSecretSha256"
                    ]
                }
            }
        },
        "gcp:compute/RegionBackendServiceLogConfig:RegionBackendServiceLogConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "Whether to enable logging for the load balancer traffic served by this backend service.\n"
                },
                "optionalFields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the fields to include in logging. This field can only be specified if logging is enabled for this backend service.\n"
                },
                "optionalMode": {
                    "type": "string",
                    "description": "Specifies the optional logging mode for the load balancer traffic.\nSupported values: INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM.\nPossible values are: `INCLUDE_ALL_OPTIONAL`, `EXCLUDE_ALL_OPTIONAL`, `CUSTOM`.\n"
                },
                "sampleRate": {
                    "type": "number",
                    "description": "This field can only be specified if logging is enabled for this backend service. The value of\nthe field must be in [0, 1]. This configures the sampling rate of requests to the load balancer\nwhere 1.0 means all logged requests are reported and 0.0 means no logged requests are reported.\nThe default value is 1.0.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "optionalFields",
                        "optionalMode"
                    ]
                }
            }
        },
        "gcp:compute/RegionBackendServiceNetworkPassThroughLbTrafficPolicy:RegionBackendServiceNetworkPassThroughLbTrafficPolicy": {
            "properties": {
                "zonalAffinity": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity:RegionBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity",
                    "description": "When configured, new connections are load balanced across healthy backend endpoints in the local zone.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity:RegionBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity": {
            "properties": {
                "spillover": {
                    "type": "string",
                    "description": "This field indicates whether zonal affinity is enabled or not.\nDefault value is `ZONAL_AFFINITY_DISABLED`.\nPossible values are: `ZONAL_AFFINITY_DISABLED`, `ZONAL_AFFINITY_SPILL_CROSS_ZONE`, `ZONAL_AFFINITY_STAY_WITHIN_ZONE`.\n"
                },
                "spilloverRatio": {
                    "type": "number",
                    "description": "The value of the field must be in [0, 1]. When the ratio of the count of healthy backend endpoints in a zone\nto the count of backend endpoints in that same zone is equal to or above this threshold, the load balancer\ndistributes new connections to all healthy endpoints in the local zone only. When the ratio of the count\nof healthy backend endpoints in a zone to the count of backend endpoints in that same zone is below this\nthreshold, the load balancer distributes all new connections to all healthy endpoints across all zones.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceOutlierDetection:RegionBackendServiceOutlierDetection": {
            "properties": {
                "baseEjectionTime": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceOutlierDetectionBaseEjectionTime:RegionBackendServiceOutlierDetectionBaseEjectionTime",
                    "description": "The base time that a host is ejected for. The real time is equal to the base\ntime multiplied by the number of times the host has been ejected. Defaults to\n30000ms or 30s.\nStructure is documented below.\n"
                },
                "consecutiveErrors": {
                    "type": "integer",
                    "description": "Number of errors before a host is ejected from the connection pool. When the\nbackend host is accessed over HTTP, a 5xx return code qualifies as an error.\nDefaults to 5.\n"
                },
                "consecutiveGatewayFailure": {
                    "type": "integer",
                    "description": "The number of consecutive gateway failures (502, 503, 504 status or connection\nerrors that are mapped to one of those status codes) before a consecutive\ngateway failure ejection occurs. Defaults to 5.\n"
                },
                "enforcingConsecutiveErrors": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive 5xx. This setting can be used to disable\nejection or to ramp it up slowly. Defaults to 100.\n"
                },
                "enforcingConsecutiveGatewayFailure": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive gateway failures. This setting can be\nused to disable ejection or to ramp it up slowly. Defaults to 0.\n"
                },
                "enforcingSuccessRate": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through success rate statistics. This setting can be used to\ndisable ejection or to ramp it up slowly. Defaults to 100.\n"
                },
                "interval": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceOutlierDetectionInterval:RegionBackendServiceOutlierDetectionInterval",
                    "description": "Time interval between ejection sweep analysis. This can result in both new\nejections as well as hosts being returned to service. Defaults to 10 seconds.\nStructure is documented below.\n"
                },
                "maxEjectionPercent": {
                    "type": "integer",
                    "description": "Maximum percentage of hosts in the load balancing pool for the backend service\nthat can be ejected. Defaults to 10%.\n"
                },
                "successRateMinimumHosts": {
                    "type": "integer",
                    "description": "The number of hosts in a cluster that must have enough request volume to detect\nsuccess rate outliers. If the number of hosts is less than this setting, outlier\ndetection via success rate statistics is not performed for any host in the\ncluster. Defaults to 5.\n"
                },
                "successRateRequestVolume": {
                    "type": "integer",
                    "description": "The minimum number of total requests that must be collected in one interval (as\ndefined by the interval duration above) to include this host in success rate\nbased outlier detection. If the volume is lower than this setting, outlier\ndetection via success rate statistics is not performed for that host. Defaults\nto 100.\n"
                },
                "successRateStdevFactor": {
                    "type": "integer",
                    "description": "This factor is used to determine the ejection threshold for success rate outlier\nejection. The ejection threshold is the difference between the mean success\nrate, and the product of this factor and the standard deviation of the mean\nsuccess rate: mean - (stdev * success_rate_stdev_factor). This factor is divided\nby a thousand to get a double. That is, if the desired factor is 1.9, the\nruntime value should be 1900. Defaults to 1900.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceOutlierDetectionBaseEjectionTime:RegionBackendServiceOutlierDetectionBaseEjectionTime": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 \u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive\n\u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionBackendServiceOutlierDetectionInterval:RegionBackendServiceOutlierDetectionInterval": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 \u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive\n\u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionBackendServiceParams:RegionBackendServiceParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the region backend service. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceStrongSessionAffinityCookie:RegionBackendServiceStrongSessionAffinityCookie": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the cookie.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to set for the cookie.\n"
                },
                "ttl": {
                    "$ref": "#/types/gcp:compute/RegionBackendServiceStrongSessionAffinityCookieTtl:RegionBackendServiceStrongSessionAffinityCookieTtl",
                    "description": "Lifetime of the cookie.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceStrongSessionAffinityCookieTtl:RegionBackendServiceStrongSessionAffinityCookieTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionBackendServiceSubsetting:RegionBackendServiceSubsetting": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "The algorithm used for subsetting.\nPossible values are: `CONSISTENT_HASH_SUBSETTING`.\n"
                },
                "subsetSize": {
                    "type": "integer",
                    "description": "The number of backends per backend group assigned to each proxy instance or each service mesh client.\nAn input parameter to the CONSISTENT_HASH_SUBSETTING algorithm. Can only be set if policy is set to\nCONSISTENT_HASH_SUBSETTING. Can only be set if load balancing scheme is INTERNAL_MANAGED or INTERNAL_SELF_MANAGED.\nsubsetSize is optional for Internal HTTP(S) load balancing and required for Traffic Director.\nIf you do not provide this value, Cloud Load Balancing will calculate it dynamically to optimize the number\nof proxies/clients visible to each backend and vice versa.\nMust be greater than 0. If subsetSize is larger than the number of backends/endpoints, then subsetting is disabled.\n"
                }
            },
            "type": "object",
            "required": [
                "policy"
            ]
        },
        "gcp:compute/RegionBackendServiceTlsSettings:RegionBackendServiceTlsSettings": {
            "properties": {
                "authenticationConfig": {
                    "type": "string",
                    "description": "Reference to the BackendAuthenticationConfig resource from the networksecurity.googleapis.com namespace.\nCan be used in authenticating TLS connections to the backend, as specified by the authenticationMode field.\nCan only be specified if authenticationMode is not NONE.\n"
                },
                "sni": {
                    "type": "string",
                    "description": "Server Name Indication - see RFC3546 section 3.1. If set, the load balancer sends this string as the SNI hostname in the\nTLS connection to the backend, and requires that this string match a Subject Alternative Name (SAN) in the backend's\nserver certificate. With a Regional Internet NEG backend, if the SNI is specified here, the load balancer uses it\nregardless of whether the Regional Internet NEG is specified with FQDN or IP address and port.\n"
                },
                "subjectAltNames": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionBackendServiceTlsSettingsSubjectAltName:RegionBackendServiceTlsSettingsSubjectAltName"
                    },
                    "description": "A list of Subject Alternative Names (SANs) that the Load Balancer verifies during a TLS handshake with the backend.\nWhen the server presents its X.509 certificate to the Load Balancer, the Load Balancer inspects the certificate's SAN field,\nand requires that at least one SAN match one of the subjectAltNames in the list. This field is limited to 5 entries.\nWhen both sni and subjectAltNames are specified, the load balancer matches the backend certificate's SAN only to\nsubjectAltNames.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionBackendServiceTlsSettingsSubjectAltName:RegionBackendServiceTlsSettingsSubjectAltName": {
            "properties": {
                "dnsName": {
                    "type": "string",
                    "description": "The SAN specified as a DNS Name.\n"
                },
                "uniformResourceIdentifier": {
                    "type": "string",
                    "description": "The SAN specified as a URI.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionCommitmentLicenseResource:RegionCommitmentLicenseResource": {
            "properties": {
                "amount": {
                    "type": "string",
                    "description": "The number of licenses purchased.\n",
                    "willReplaceOnChanges": true
                },
                "coresPerLicense": {
                    "type": "string",
                    "description": "Specifies the core range of the instance for which this license applies.\n",
                    "willReplaceOnChanges": true
                },
                "license": {
                    "type": "string",
                    "description": "Any applicable license URI.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "license"
            ]
        },
        "gcp:compute/RegionCommitmentParams:RegionCommitmentParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the commitment. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionCommitmentResource:RegionCommitmentResource": {
            "properties": {
                "acceleratorType": {
                    "type": "string",
                    "description": "Name of the accelerator type resource. Applicable only when the type is ACCELERATOR.\n",
                    "willReplaceOnChanges": true
                },
                "amount": {
                    "type": "string",
                    "description": "The amount of the resource purchased (in a type-dependent unit,\nsuch as bytes). For vCPUs, this can just be an integer. For memory,\nthis must be provided in MB. Memory must be a multiple of 256 MB,\nwith up to 6.5GB of memory per every vCPU.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "Type of resource for which this commitment applies.\nPossible values are VCPU, MEMORY, LOCAL_SSD, and ACCELERATOR.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionDiskAsyncPrimaryDisk:RegionDiskAsyncPrimaryDisk": {
            "properties": {
                "disk": {
                    "type": "string",
                    "description": "Primary disk for asynchronous disk replication.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "disk"
            ]
        },
        "gcp:compute/RegionDiskDiskEncryptionKey:RegionDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The name of the encryption key that is stored in Google Cloud KMS.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "(Output)\nThe RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/RegionDiskGuestOsFeature:RegionDiskGuestOsFeature": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "The type of supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options.\nPossible values are: `MULTI_IP_SUBNET`, `SECURE_BOOT`, `SEV_CAPABLE`, `UEFI_COMPATIBLE`, `VIRTIO_SCSI_MULTIQUEUE`, `WINDOWS`, `GVNIC`, `SEV_LIVE_MIGRATABLE`, `SEV_SNP_CAPABLE`, `SUSPEND_RESUME_COMPATIBLE`, `TDX_CAPABLE`, `SEV_LIVE_MIGRATABLE_V2`, `SNP_SVSM_CAPABLE`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/RegionDiskIamBindingCondition:RegionDiskIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/RegionDiskIamMemberCondition:RegionDiskIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/RegionDiskSourceImageEncryptionKey:RegionDiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The name of the encryption key that is stored in Google Cloud KMS.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "(Output)\nThe RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/RegionDiskSourceSnapshotEncryptionKey:RegionDiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "(Optional, Beta)\nThe name of the encryption key that is stored in Google Cloud KMS.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "(Output)\nThe RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/RegionHealthCheckGrpcHealthCheck:RegionHealthCheckGrpcHealthCheck": {
            "properties": {
                "grpcServiceName": {
                    "type": "string",
                    "description": "The gRPC service name for the health check.\nThe value of grpcServiceName has the following meanings by convention:\n* Empty serviceName means the overall status of all services at the backend.\n* Non-empty serviceName means the health of that gRPC service, as defined by the owner of the service.\nThe grpcServiceName can only be ASCII.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number for the health check request.\nMust be specified if portName and portSpecification are not set\nor if\u003cspan pulumi-lang-nodejs=\" portSpecification \" pulumi-lang-dotnet=\" PortSpecification \" pulumi-lang-go=\" portSpecification \" pulumi-lang-python=\" port_specification \" pulumi-lang-yaml=\" portSpecification \" pulumi-lang-java=\" portSpecification \" pulumi-lang-hcl=\" port_specification \"\u003e portSpecification \u003c/span\u003eis USE_FIXED_PORT. Valid values are 1 through 65535.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, gRPC health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionHealthCheckGrpcTlsHealthCheck:RegionHealthCheckGrpcTlsHealthCheck": {
            "properties": {
                "grpcServiceName": {
                    "type": "string",
                    "description": "The gRPC service name for the health check.\nThe value of grpcServiceName has the following meanings by convention:\n* Empty serviceName means the overall status of all services at the backend.\n* Non-empty serviceName means the health of that gRPC service, as defined by the owner of the service.\nThe grpcServiceName can only be ASCII.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number for the health check request.\nMust be specified if\u003cspan pulumi-lang-nodejs=\" portSpecification \" pulumi-lang-dotnet=\" PortSpecification \" pulumi-lang-go=\" portSpecification \" pulumi-lang-python=\" port_specification \" pulumi-lang-yaml=\" portSpecification \" pulumi-lang-java=\" portSpecification \" pulumi-lang-hcl=\" port_specification \"\u003e portSpecification \u003c/span\u003eis USE_FIXED_PORT. Valid values are 1 through 65535.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: Not supported for GRPC with TLS health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, gRPC health check follows behavior specified in the \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e field.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionHealthCheckHttp2HealthCheck:RegionHealthCheckHttp2HealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTP2 health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTP2 health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, HTTP2 health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTP2 health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionHealthCheckHttpHealthCheck:RegionHealthCheckHttpHealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTP health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTP health check request.\nThe default value is 80.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, HTTP health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend.\nDefault value is `NONE`.\nPossible values are: `NONE`, `PROXY_V1`.\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTP health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionHealthCheckHttpsHealthCheck:RegionHealthCheckHttpsHealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTPS health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTPS health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, HTTPS health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend.\nDefault value is `NONE`.\nPossible values are: `NONE`, `PROXY_V1`.\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTPS health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionHealthCheckLogConfig:RegionHealthCheckLogConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "Indicates whether or not to export logs. This is false by default,\nwhich means no health check logging will be done.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionHealthCheckSslHealthCheck:RegionHealthCheckSslHealthCheck": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTP2 health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, HTTP2 health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend.\nDefault value is `NONE`.\nPossible values are: `NONE`, `PROXY_V1`.\n"
                },
                "request": {
                    "type": "string",
                    "description": "The application data to send once the SSL connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionHealthCheckTcpHealthCheck:RegionHealthCheckTcpHealthCheck": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the TCP health check request.\nThe default value is 80.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n* `USE_FIXED_PORT`: The port number in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e is used for health checking.\n* `USE_NAMED_PORT`: The `portName` is used for health checking.\n* `USE_SERVING_PORT`: For NetworkEndpointGroup, the port specified for each\nnetwork endpoint is used for health checking. For other backends, the\nport or named port specified in the Backend Service is used for health\nchecking.\nIf not specified, TCP health check follows behavior specified in \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\" pulumi-lang-hcl=\"`port`\"\u003e`port`\u003c/span\u003e and\n`portName` fields.\nPossible values are: `USE_FIXED_PORT`, `USE_NAMED_PORT`, `USE_SERVING_PORT`.\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend.\nDefault value is `NONE`.\nPossible values are: `NONE`, `PROXY_V1`.\n"
                },
                "request": {
                    "type": "string",
                    "description": "The application data to send once the TCP connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerAllInstancesConfig:RegionInstanceGroupManagerAllInstancesConfig": {
            "properties": {
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": ", The label key-value pairs that you want to patch onto the instance.\n\n- - -\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": ", The metadata key-value pairs that you want to patch onto the instance. For more information, see [Project and instance metadata](https://cloud.google.com/compute/docs/metadata#project_and_instance_metadata).\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerAutoHealingPolicies:RegionInstanceGroupManagerAutoHealingPolicies": {
            "properties": {
                "healthCheck": {
                    "type": "string",
                    "description": "The health check resource that signals autohealing.\n"
                },
                "initialDelaySec": {
                    "type": "integer",
                    "description": "The number of seconds that the managed instance group waits before\nit applies autohealing policies to new instances or recently recreated instances. Between 0 and 3600.\n"
                }
            },
            "type": "object",
            "required": [
                "healthCheck",
                "initialDelaySec"
            ]
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicy:RegionInstanceGroupManagerInstanceFlexibilityPolicy": {
            "properties": {
                "instanceSelections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection"
                    },
                    "description": "Named instance selections configuring properties that the group will use when creating new VMs.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection": {
            "properties": {
                "disks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDisk:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDisk"
                    },
                    "description": "List of disks to be attached to the instances created from this selection.\n"
                },
                "machineTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Full machine-type names, e.g. \"n1-standard-16\"\n"
                },
                "minCpuPlatform": {
                    "type": "string",
                    "description": "Name of the minimum CPU platform to be used by this instance selection. e.g. 'Intel Ice Lake'\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance group manager. Must be 1-63\ncharacters long and comply with\n[RFC1035](https://www.ietf.org/rfc/rfc1035.txt). Supported characters\ninclude lowercase letters, numbers, and hyphens.\n"
                },
                "rank": {
                    "type": "integer",
                    "description": "Preference of this instance selection. Lower number means higher preference. MIG will first try to create a VM based on the machine-type with lowest rank and fallback to next rank based on availability. Machine types and instance selections with the same rank have the same preference.\n"
                }
            },
            "type": "object",
            "required": [
                "machineTypes",
                "name"
            ]
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDisk:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDisk": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": ", The architecture of the image. Allowed values are ARM64 or X86_64.\n"
                },
                "autoDelete": {
                    "type": "boolean",
                    "description": ", Whether or not the disk should be auto-deleted. This defaults to true.\n"
                },
                "boot": {
                    "type": "boolean",
                    "description": ", Indicates that this is a boot disk. This defaults to false.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": ", A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.\n"
                },
                "diskEncryptionKey": {
                    "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskDiskEncryptionKey:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskDiskEncryptionKey",
                    "description": ", Encrypts or decrypts a disk using a customer-supplied encryption key.  Structure is documented below.\n"
                },
                "diskName": {
                    "type": "string",
                    "description": ", Name of the disk. When not provided, this defaults to the name of the instance.\n"
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": ", The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be one of 375 or 3000 GB, with a default of 375 GB.\n"
                },
                "diskType": {
                    "type": "string",
                    "description": ", The Google Compute Engine disk type. Such as \"pd-ssd\", \"local-ssd\", \"pd-balanced\" or \"pd-standard\".\n"
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": ", A list of features to enable on the guest operating system. Applicable only for bootable images.\n"
                },
                "interface": {
                    "type": "string",
                    "description": ", Specifies the disk interface to use for attaching this disk.\n"
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskLabel:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskLabel"
                    },
                    "description": ", A set of key/value label pairs to assign to disks. Structure is documented below.\n"
                },
                "mode": {
                    "type": "string",
                    "description": ", The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.\n"
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": ", Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. For more details, see the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk) or the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks) depending on the selected disk_type.\n"
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": ", Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).\n"
                },
                "resourceManagerTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskResourceManagerTag:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskResourceManagerTag"
                    },
                    "description": ", A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty. Structure is documented below.\n"
                },
                "resourcePolicies": {
                    "type": "string",
                    "description": ", A list (short name or id) of resource policies to attach to this disk. Currently a max of 1 resource policy is supported.\n"
                },
                "source": {
                    "type": "string",
                    "description": ", The name (not self_link) of the disk (such as those managed by google_compute_disk) to attach. \u003e Note: Either source or\u003cspan pulumi-lang-nodejs=\" sourceImage \" pulumi-lang-dotnet=\" SourceImage \" pulumi-lang-go=\" sourceImage \" pulumi-lang-python=\" source_image \" pulumi-lang-yaml=\" sourceImage \" pulumi-lang-java=\" sourceImage \" pulumi-lang-hcl=\" source_image \"\u003e sourceImage \u003c/span\u003eis required when creating a new instance except for when creating a local SSD.\n"
                },
                "sourceImage": {
                    "type": "string",
                    "description": ", The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}. \u003e Note: Either source or\u003cspan pulumi-lang-nodejs=\" sourceImage \" pulumi-lang-dotnet=\" SourceImage \" pulumi-lang-go=\" sourceImage \" pulumi-lang-python=\" source_image \" pulumi-lang-yaml=\" sourceImage \" pulumi-lang-java=\" sourceImage \" pulumi-lang-hcl=\" source_image \"\u003e sourceImage \u003c/span\u003eis required when creating a new instance except for when creating a local SSD.\n"
                },
                "sourceImageEncryptionKey": {
                    "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceImageEncryptionKey:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceImageEncryptionKey",
                    "description": ", The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. Instance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys. Structure is documented below.\n"
                },
                "sourceSnapshot": {
                    "type": "string",
                    "description": ", The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot, initializeParams.sourceImage, or disks.source is required except for local SSD.\n"
                },
                "sourceSnapshotEncryptionKey": {
                    "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceSnapshotEncryptionKey:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceSnapshotEncryptionKey",
                    "description": ", The customer-supplied encryption key of the source snapshot. Structure is documented below.\n- - -\n"
                },
                "type": {
                    "type": "string",
                    "description": ", The type of Google Compute Engine disk, can be either \"SCRATCH\" or \"PERSISTENT\".\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskDiskEncryptionKey:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": ", The self link of the encryption key that is stored in Google Cloud KMS.\n- - -\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": ", The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": ", Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": ", Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskLabel:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskLabel": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": ", The unique key of the label to assign to disks.\n"
                },
                "value": {
                    "type": "string",
                    "description": ", The value of the label to assign to disks.\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ]
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskResourceManagerTag:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskResourceManagerTag": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": ", The unique key of the resource manager tag to assign to disks. Keys must be in the format tagKeys/{tag_key_id}.\n"
                },
                "value": {
                    "type": "string",
                    "description": ", The value of the resource manager tag to assign to disks. Values must be in the format tagValues/456.\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ]
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceImageEncryptionKey:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": ", The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n- - -\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": ", The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": ", Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": ", Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceSnapshotEncryptionKey:RegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": ", The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n- - -\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": ", The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": ", Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": ", Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n",
                    "secret": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceLifecyclePolicy:RegionInstanceGroupManagerInstanceLifecyclePolicy": {
            "properties": {
                "defaultActionOnFailure": {
                    "type": "string",
                    "description": ", Specifies the action that a MIG performs on a failed VM. If the value of the \u003cspan pulumi-lang-nodejs=\"`onFailedHealthCheck`\" pulumi-lang-dotnet=\"`OnFailedHealthCheck`\" pulumi-lang-go=\"`onFailedHealthCheck`\" pulumi-lang-python=\"`on_failed_health_check`\" pulumi-lang-yaml=\"`onFailedHealthCheck`\" pulumi-lang-java=\"`onFailedHealthCheck`\" pulumi-lang-hcl=\"`on_failed_health_check`\"\u003e`onFailedHealthCheck`\u003c/span\u003e field is `DEFAULT_ACTION`, then the same action also applies to the VMs on which your application fails a health check. Valid options are: `DO_NOTHING`, `REPAIR`. If `DO_NOTHING`, then MIG does not repair a failed VM. If `REPAIR` (default), then MIG automatically repairs a failed VM by recreating it. For more information, see about repairing VMs in a MIG.\n"
                },
                "forceUpdateOnRepair": {
                    "type": "string",
                    "description": ", Specifies whether to apply the group's latest configuration when repairing a VM. Valid options are: `YES`, `NO`. If `YES` and you updated the group's instance template or per-instance configurations after the VM was created, then these changes are applied when VM is repaired. If `NO` (default), then updates are applied in accordance with the group's update policy type.\n"
                },
                "onFailedHealthCheck": {
                    "type": "string",
                    "description": ", Specifies the action that a MIG performs on an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid options are: `DEFAULT_ACTION`, `DO_NOTHING`, `REPAIR`. If `DEFAULT_ACTION` (default), then MIG uses the same action configured for the  \u003cspan pulumi-lang-nodejs=\"`defaultActionOnFailure`\" pulumi-lang-dotnet=\"`DefaultActionOnFailure`\" pulumi-lang-go=\"`defaultActionOnFailure`\" pulumi-lang-python=\"`default_action_on_failure`\" pulumi-lang-yaml=\"`defaultActionOnFailure`\" pulumi-lang-java=\"`defaultActionOnFailure`\" pulumi-lang-hcl=\"`default_action_on_failure`\"\u003e`defaultActionOnFailure`\u003c/span\u003e field. If `DO_NOTHING`, then MIG does not repair unhealthy VM. If `REPAIR`, then MIG automatically repairs an unhealthy VM by recreating it. For more information, see about repairing VMs in a MIG.\n"
                },
                "onRepair": {
                    "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerInstanceLifecyclePolicyOnRepair:RegionInstanceGroupManagerInstanceLifecyclePolicyOnRepair",
                    "description": "), Configuration for VM repairs in the MIG. Structure is documented below.\n- - -\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "onRepair"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceGroupManagerInstanceLifecyclePolicyOnRepair:RegionInstanceGroupManagerInstanceLifecyclePolicyOnRepair": {
            "properties": {
                "allowChangingZone": {
                    "type": "string",
                    "description": ", Specifies whether the MIG can change a VM's zone during a repair. If \"YES\", MIG can select a different zone for the VM during a repair. Else if \"NO\", MIG cannot change a VM's zone during a repair. The default value of\u003cspan pulumi-lang-nodejs=\" allowChangingZone \" pulumi-lang-dotnet=\" AllowChangingZone \" pulumi-lang-go=\" allowChangingZone \" pulumi-lang-python=\" allow_changing_zone \" pulumi-lang-yaml=\" allowChangingZone \" pulumi-lang-java=\" allowChangingZone \" pulumi-lang-hcl=\" allow_changing_zone \"\u003e allowChangingZone \u003c/span\u003eis \"NO\".\n\n- - -\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedInstanceFlexibilityPolicy\"\" pulumi-lang-dotnet=\"\"NestedInstanceFlexibilityPolicy\"\" pulumi-lang-go=\"\"nestedInstanceFlexibilityPolicy\"\" pulumi-lang-python=\"\"nested_instance_flexibility_policy\"\" pulumi-lang-yaml=\"\"nestedInstanceFlexibilityPolicy\"\" pulumi-lang-java=\"\"nestedInstanceFlexibilityPolicy\"\" pulumi-lang-hcl=\"\"nested_instance_flexibility_policy\"\"\u003e\"nestedInstanceFlexibilityPolicy\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`instanceFlexibilityPolicy`\" pulumi-lang-dotnet=\"`InstanceFlexibilityPolicy`\" pulumi-lang-go=\"`instanceFlexibilityPolicy`\" pulumi-lang-python=\"`instance_flexibility_policy`\" pulumi-lang-yaml=\"`instanceFlexibilityPolicy`\" pulumi-lang-java=\"`instanceFlexibilityPolicy`\" pulumi-lang-hcl=\"`instance_flexibility_policy`\"\u003e`instanceFlexibilityPolicy`\u003c/span\u003e block supports:\n\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerNamedPort:RegionInstanceGroupManagerNamedPort": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the port.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number.\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port"
            ]
        },
        "gcp:compute/RegionInstanceGroupManagerParams:RegionInstanceGroupManagerParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456. For more information, see [Manage tags for resources](https://cloud.google.com/compute/docs/tag-resources)\n\n- - -\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerResourcePolicies:RegionInstanceGroupManagerResourcePolicies": {
            "properties": {
                "workloadPolicy": {
                    "type": "string",
                    "description": "The URL of the workload policy that is specified for this managed instance group. It can be a full or partial URL.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerStandbyPolicy:RegionInstanceGroupManagerStandbyPolicy": {
            "properties": {
                "initialDelaySec": {
                    "type": "integer",
                    "description": "Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. Valid options are: `MANUAL`, `SCALE_OUT_POOL`. If `MANUAL`(default), you have full control over which VMs are stopped and suspended in the MIG. If `SCALE_OUT_POOL`, the MIG uses the VMs from the standby pools to accelerate the scale out by resuming or starting them and then automatically replenishes the standby pool with new VMs to maintain the target sizes.\n- - -\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "initialDelaySec",
                        "mode"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceGroupManagerStatefulDisk:RegionInstanceGroupManagerStatefulDisk": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": ", A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the disk when the VM is deleted, but do not delete the disk. `ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently deleted from the instance group. The default is `NEVER`.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": ", The device name of the disk to be attached.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceName"
            ]
        },
        "gcp:compute/RegionInstanceGroupManagerStatefulExternalIp:RegionInstanceGroupManagerStatefulExternalIp": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": ", A value that prescribes what should happen to the external ip when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the ip when the VM is deleted, but do not delete the ip. `ON_PERMANENT_INSTANCE_DELETION` will delete the external ip when the VM is permanently deleted from the instance group.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": ", The network interface name of the external Ip. Possible value: \u003cspan pulumi-lang-nodejs=\"`nic0`\" pulumi-lang-dotnet=\"`Nic0`\" pulumi-lang-go=\"`nic0`\" pulumi-lang-python=\"`nic0`\" pulumi-lang-yaml=\"`nic0`\" pulumi-lang-java=\"`nic0`\" pulumi-lang-hcl=\"`nic0`\"\u003e`nic0`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerStatefulInternalIp:RegionInstanceGroupManagerStatefulInternalIp": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": ", A value that prescribes what should happen to the internal ip when the VM instance is deleted. The available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`. `NEVER` - detach the ip when the VM is deleted, but do not delete the ip. `ON_PERMANENT_INSTANCE_DELETION` will delete the internal ip when the VM is permanently deleted from the instance group.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": ", The network interface name of the internal Ip. Possible value: \u003cspan pulumi-lang-nodejs=\"`nic0`\" pulumi-lang-dotnet=\"`Nic0`\" pulumi-lang-go=\"`nic0`\" pulumi-lang-python=\"`nic0`\" pulumi-lang-yaml=\"`nic0`\" pulumi-lang-java=\"`nic0`\" pulumi-lang-hcl=\"`nic0`\"\u003e`nic0`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceGroupManagerStatus:RegionInstanceGroupManagerStatus": {
            "properties": {
                "allInstancesConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStatusAllInstancesConfig:RegionInstanceGroupManagerStatusAllInstancesConfig"
                    },
                    "description": "Properties to set on all instances in the group. After setting\nallInstancesConfig on the group, you must update the group's instances to\napply the configuration.\n"
                },
                "isStable": {
                    "type": "boolean",
                    "description": "A bit indicating whether the managed instance group is in a stable state. A stable state means that: none of the instances in the managed instance group is currently undergoing any type of change (for example, creation, restart, or deletion); no future changes are scheduled for instances in the managed instance group; and the managed instance group itself is not being modified.\n"
                },
                "statefuls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStatusStateful:RegionInstanceGroupManagerStatusStateful"
                    },
                    "description": "Stateful status of the given Instance Group Manager.\n"
                },
                "versionTargets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStatusVersionTarget:RegionInstanceGroupManagerStatusVersionTarget"
                    },
                    "description": "A bit indicating whether version target has been reached in this managed instance group, i.e. all instances are in their target version. Instances' target version are specified by version field on Instance Group Manager.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "allInstancesConfigs",
                        "isStable",
                        "statefuls",
                        "versionTargets"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceGroupManagerStatusAllInstancesConfig:RegionInstanceGroupManagerStatusAllInstancesConfig": {
            "properties": {
                "currentRevision": {
                    "type": "string",
                    "description": "Current all-instances configuration revision. This value is in RFC3339 text format.\n"
                },
                "effective": {
                    "type": "boolean",
                    "description": "A bit indicating whether this configuration has been applied to all managed instances in the group.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "currentRevision",
                        "effective"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceGroupManagerStatusStateful:RegionInstanceGroupManagerStatusStateful": {
            "properties": {
                "hasStatefulConfig": {
                    "type": "boolean",
                    "description": "A bit indicating whether the managed instance group has stateful configuration, that is, if you have configured any items in a stateful policy or in per-instance configs. The group might report that it has no stateful config even when there is still some preserved state on a managed instance, for example, if you have deleted all PICs but not yet applied those deletions.\n"
                },
                "perInstanceConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerStatusStatefulPerInstanceConfig:RegionInstanceGroupManagerStatusStatefulPerInstanceConfig"
                    },
                    "description": "Status of per-instance configs on the instances.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "hasStatefulConfig",
                        "perInstanceConfigs"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceGroupManagerStatusStatefulPerInstanceConfig:RegionInstanceGroupManagerStatusStatefulPerInstanceConfig": {
            "properties": {
                "allEffective": {
                    "type": "boolean",
                    "description": "A bit indicating if all of the group's per-instance configs (listed in the output of a listPerInstanceConfigs API call) have status `EFFECTIVE` or there are no per-instance-configs.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "allEffective"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceGroupManagerStatusVersionTarget:RegionInstanceGroupManagerStatusVersionTarget": {
            "properties": {
                "isReached": {
                    "type": "boolean",
                    "description": "A bit indicating whether version target has been reached in this managed instance group, i.e. all instances are in their target version. Instances' target version are specified by version field on Instance Group Manager.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "isReached"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceGroupManagerTargetSizePolicy:RegionInstanceGroupManagerTargetSizePolicy": {
            "properties": {
                "mode": {
                    "type": "string",
                    "description": "The mode of target size policy based on which the MIG creates its VMs individually or all at once. Values: \"BULK\", \"INDIVIDUAL\".\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "mode"
            ]
        },
        "gcp:compute/RegionInstanceGroupManagerUpdatePolicy:RegionInstanceGroupManagerUpdatePolicy": {
            "properties": {
                "instanceRedistributionType": {
                    "type": "string",
                    "description": "The instance redistribution policy for regional managed instance groups. Valid values are: `\"PROACTIVE\"`, `\"NONE\"`. If `PROACTIVE` (default), the group attempts to maintain an even distribution of VM instances across zones in the region. If `NONE`, proactive redistribution is disabled.\n"
                },
                "maxSurgeFixed": {
                    "type": "integer",
                    "description": ", Specifies a fixed number of VM instances. This must be a positive integer. Conflicts with \u003cspan pulumi-lang-nodejs=\"`maxSurgePercent`\" pulumi-lang-dotnet=\"`MaxSurgePercent`\" pulumi-lang-go=\"`maxSurgePercent`\" pulumi-lang-python=\"`max_surge_percent`\" pulumi-lang-yaml=\"`maxSurgePercent`\" pulumi-lang-java=\"`maxSurgePercent`\" pulumi-lang-hcl=\"`max_surge_percent`\"\u003e`maxSurgePercent`\u003c/span\u003e. Both cannot be 0.\n"
                },
                "maxSurgePercent": {
                    "type": "integer",
                    "description": ", Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%. Conflicts with \u003cspan pulumi-lang-nodejs=\"`maxSurgeFixed`\" pulumi-lang-dotnet=\"`MaxSurgeFixed`\" pulumi-lang-go=\"`maxSurgeFixed`\" pulumi-lang-python=\"`max_surge_fixed`\" pulumi-lang-yaml=\"`maxSurgeFixed`\" pulumi-lang-java=\"`maxSurgeFixed`\" pulumi-lang-hcl=\"`max_surge_fixed`\"\u003e`maxSurgeFixed`\u003c/span\u003e.\n"
                },
                "maxUnavailableFixed": {
                    "type": "integer",
                    "description": ", Specifies a fixed number of VM instances. This must be a positive integer.\n"
                },
                "maxUnavailablePercent": {
                    "type": "integer",
                    "description": ", Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%..\n"
                },
                "minReadySec": {
                    "type": "integer",
                    "description": "), Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600]\n"
                },
                "minimalAction": {
                    "type": "string",
                    "description": "Minimal action to be taken on an instance. You can specify either `NONE` to forbid any actions, `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.\n"
                },
                "mostDisruptiveAllowedAction": {
                    "type": "string",
                    "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to allow actions that do not need instance restart, RESTART to allow actions that can be applied without instance replacing or REPLACE to allow all possible actions. If the Updater determines that the minimal update action needed is more disruptive than most disruptive allowed action you specify it will not perform the update at all.\n"
                },
                "replacementMethod": {
                    "type": "string",
                    "description": ", The instance replacement method for managed instance groups. Valid values are: \"RECREATE\", \"SUBSTITUTE\". If SUBSTITUTE (default), the group replaces VM instances with new instances that have randomly generated names. If RECREATE, instance names are preserved.  You must also set\u003cspan pulumi-lang-nodejs=\" maxUnavailableFixed \" pulumi-lang-dotnet=\" MaxUnavailableFixed \" pulumi-lang-go=\" maxUnavailableFixed \" pulumi-lang-python=\" max_unavailable_fixed \" pulumi-lang-yaml=\" maxUnavailableFixed \" pulumi-lang-java=\" maxUnavailableFixed \" pulumi-lang-hcl=\" max_unavailable_fixed \"\u003e maxUnavailableFixed \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" maxUnavailablePercent \" pulumi-lang-dotnet=\" MaxUnavailablePercent \" pulumi-lang-go=\" maxUnavailablePercent \" pulumi-lang-python=\" max_unavailable_percent \" pulumi-lang-yaml=\" maxUnavailablePercent \" pulumi-lang-java=\" maxUnavailablePercent \" pulumi-lang-hcl=\" max_unavailable_percent \"\u003e maxUnavailablePercent \u003c/span\u003eto be greater than 0.\n- - -\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of update process. You can specify either `PROACTIVE` so that the instance group manager proactively executes actions in order to bring instances to their target versions or `OPPORTUNISTIC` so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).\n"
                }
            },
            "type": "object",
            "required": [
                "minimalAction",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxSurgeFixed",
                        "maxUnavailableFixed",
                        "minimalAction",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceGroupManagerVersion:RegionInstanceGroupManagerVersion": {
            "properties": {
                "instanceTemplate": {
                    "type": "string",
                    "description": "The full URL to an instance template from which all new instances of this version will be created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Version name.\n"
                },
                "targetSize": {
                    "$ref": "#/types/gcp:compute/RegionInstanceGroupManagerVersionTargetSize:RegionInstanceGroupManagerVersionTargetSize",
                    "description": "The number of instances calculated as a fixed number or a percentage depending on the settings. Structure is documented below.\n\n\u003e Exactly one \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\" pulumi-lang-hcl=\"`version`\"\u003e`version`\u003c/span\u003e you specify must not have a \u003cspan pulumi-lang-nodejs=\"`targetSize`\" pulumi-lang-dotnet=\"`TargetSize`\" pulumi-lang-go=\"`targetSize`\" pulumi-lang-python=\"`target_size`\" pulumi-lang-yaml=\"`targetSize`\" pulumi-lang-java=\"`targetSize`\" pulumi-lang-hcl=\"`target_size`\"\u003e`targetSize`\u003c/span\u003e specified. During a rolling update, the instance group manager will fulfill the \u003cspan pulumi-lang-nodejs=\"`targetSize`\" pulumi-lang-dotnet=\"`TargetSize`\" pulumi-lang-go=\"`targetSize`\" pulumi-lang-python=\"`target_size`\" pulumi-lang-yaml=\"`targetSize`\" pulumi-lang-java=\"`targetSize`\" pulumi-lang-hcl=\"`target_size`\"\u003e`targetSize`\u003c/span\u003e\nconstraints of every other \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\" pulumi-lang-hcl=\"`version`\"\u003e`version`\u003c/span\u003e, and any remaining instances will be provisioned with the version where \u003cspan pulumi-lang-nodejs=\"`targetSize`\" pulumi-lang-dotnet=\"`TargetSize`\" pulumi-lang-go=\"`targetSize`\" pulumi-lang-python=\"`target_size`\" pulumi-lang-yaml=\"`targetSize`\" pulumi-lang-java=\"`targetSize`\" pulumi-lang-hcl=\"`target_size`\"\u003e`targetSize`\u003c/span\u003e is unset.\n"
                }
            },
            "type": "object",
            "required": [
                "instanceTemplate"
            ]
        },
        "gcp:compute/RegionInstanceGroupManagerVersionTargetSize:RegionInstanceGroupManagerVersionTargetSize": {
            "properties": {
                "fixed": {
                    "type": "integer",
                    "description": ", The number of instances which are managed for this version. Conflicts with \u003cspan pulumi-lang-nodejs=\"`percent`\" pulumi-lang-dotnet=\"`Percent`\" pulumi-lang-go=\"`percent`\" pulumi-lang-python=\"`percent`\" pulumi-lang-yaml=\"`percent`\" pulumi-lang-java=\"`percent`\" pulumi-lang-hcl=\"`percent`\"\u003e`percent`\u003c/span\u003e.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": ", The number of instances (calculated as percentage) which are managed for this version. Conflicts with \u003cspan pulumi-lang-nodejs=\"`fixed`\" pulumi-lang-dotnet=\"`Fixed`\" pulumi-lang-go=\"`fixed`\" pulumi-lang-python=\"`fixed`\" pulumi-lang-yaml=\"`fixed`\" pulumi-lang-java=\"`fixed`\" pulumi-lang-hcl=\"`fixed`\"\u003e`fixed`\u003c/span\u003e.\nNote that when using \u003cspan pulumi-lang-nodejs=\"`percent`\" pulumi-lang-dotnet=\"`Percent`\" pulumi-lang-go=\"`percent`\" pulumi-lang-python=\"`percent`\" pulumi-lang-yaml=\"`percent`\" pulumi-lang-java=\"`percent`\" pulumi-lang-hcl=\"`percent`\"\u003e`percent`\u003c/span\u003e, rounding will be in favor of explicitly set \u003cspan pulumi-lang-nodejs=\"`targetSize`\" pulumi-lang-dotnet=\"`TargetSize`\" pulumi-lang-go=\"`targetSize`\" pulumi-lang-python=\"`target_size`\" pulumi-lang-yaml=\"`targetSize`\" pulumi-lang-java=\"`targetSize`\" pulumi-lang-hcl=\"`target_size`\"\u003e`targetSize`\u003c/span\u003e values; a managed instance group with 2 instances and 2 \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\" pulumi-lang-hcl=\"`version`\"\u003e`version`\u003c/span\u003es,\none of which has a `target_size.percent` of \u003cspan pulumi-lang-nodejs=\"`60`\" pulumi-lang-dotnet=\"`60`\" pulumi-lang-go=\"`60`\" pulumi-lang-python=\"`60`\" pulumi-lang-yaml=\"`60`\" pulumi-lang-java=\"`60`\" pulumi-lang-hcl=\"`60`\"\u003e`60`\u003c/span\u003e will create 2 instances of that \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\" pulumi-lang-hcl=\"`version`\"\u003e`version`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceTemplateAdvancedMachineFeatures:RegionInstanceTemplateAdvancedMachineFeatures": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have nested virtualization enabled. Defaults to false.\n",
                    "willReplaceOnChanges": true
                },
                "enableUefiNetworking": {
                    "type": "boolean",
                    "description": "Whether to enable UEFI networking for instance creation.\n",
                    "willReplaceOnChanges": true
                },
                "performanceMonitoringUnit": {
                    "type": "string",
                    "description": "[The PMU](https://cloud.google.com/compute/docs/pmu-overview) is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are `STANDARD`, `ENHANCED`, and `ARCHITECTURAL`.\n",
                    "willReplaceOnChanges": true
                },
                "threadsPerCore": {
                    "type": "integer",
                    "description": "The number of threads per physical core. To disable [simultaneous multithreading (SMT)](https://cloud.google.com/compute/docs/instances/disabling-smt) set this to 1.\n",
                    "willReplaceOnChanges": true
                },
                "turboMode": {
                    "type": "string",
                    "description": "Turbo frequency mode to use for the instance. Supported modes are currently either `ALL_CORE_MAX` or unset (default).\n"
                },
                "visibleCoreCount": {
                    "type": "integer",
                    "description": "The number of physical cores to expose to an instance. [visible cores info (VC)](https://cloud.google.com/compute/docs/instances/customize-visible-cores).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceTemplateConfidentialInstanceConfig:RegionInstanceTemplateConfidentialInstanceConfig": {
            "properties": {
                "confidentialInstanceType": {
                    "type": "string",
                    "description": "Defines the confidential computing technology the instance uses. SEV is an AMD feature. TDX is an Intel feature. One of the following values is required: `SEV`, `SEV_SNP`, `TDX`. \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e can be set to MIGRATE if \u003cspan pulumi-lang-nodejs=\"`confidentialInstanceType`\" pulumi-lang-dotnet=\"`ConfidentialInstanceType`\" pulumi-lang-go=\"`confidentialInstanceType`\" pulumi-lang-python=\"`confidential_instance_type`\" pulumi-lang-yaml=\"`confidentialInstanceType`\" pulumi-lang-java=\"`confidentialInstanceType`\" pulumi-lang-hcl=\"`confidential_instance_type`\"\u003e`confidentialInstanceType`\u003c/span\u003e is set to `SEV` and \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e is set to `\"AMD Milan\"` or `\"AMD Genoa\"`. Otherwise, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e has to be set to `\"AMD Milan\"` or this will fail to create the VM.\n",
                    "willReplaceOnChanges": true
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e can be set to MIGRATE if \u003cspan pulumi-lang-nodejs=\"`minCpuPlatform`\" pulumi-lang-dotnet=\"`MinCpuPlatform`\" pulumi-lang-go=\"`minCpuPlatform`\" pulumi-lang-python=\"`min_cpu_platform`\" pulumi-lang-yaml=\"`minCpuPlatform`\" pulumi-lang-java=\"`minCpuPlatform`\" pulumi-lang-hcl=\"`min_cpu_platform`\"\u003e`minCpuPlatform`\u003c/span\u003e is set to `\"AMD Milan\"` or `\"AMD Genoa\"`. Otherwise, \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e has to be set to TERMINATE or this will fail to create the VM.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceTemplateDisk:RegionInstanceTemplateDisk": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": "The architecture of the attached disk. Valid values are `ARM64` or \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\" pulumi-lang-hcl=\"`x86_64`\"\u003e`x8664`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "autoDelete": {
                    "type": "boolean",
                    "description": "Whether or not the disk should be auto-deleted.\nThis defaults to true.\n",
                    "willReplaceOnChanges": true
                },
                "boot": {
                    "type": "boolean",
                    "description": "Indicates that this is a boot disk.\n",
                    "willReplaceOnChanges": true
                },
                "deviceName": {
                    "type": "string",
                    "description": "A unique device name that is reflected into the\n/dev/  tree of a Linux operating system running within the instance. If not\nspecified, the server chooses a default device name to apply to this disk.\n",
                    "willReplaceOnChanges": true
                },
                "diskEncryptionKey": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateDiskDiskEncryptionKey:RegionInstanceTemplateDiskDiskEncryptionKey",
                    "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.\n\nIf you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.\n\nIf you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "diskName": {
                    "type": "string",
                    "description": "Name of the disk. When not provided, this defaults\nto the name of the instance.\n",
                    "willReplaceOnChanges": true
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes. If not\nspecified, it will inherit the size of its base image. For SCRATCH disks,\nthe size must be exactly 375GB.\n",
                    "willReplaceOnChanges": true
                },
                "diskType": {
                    "type": "string",
                    "description": "The GCE disk type. Such as `\"pd-ssd\"`, `\"local-ssd\"`,\n`\"pd-balanced\"` or `\"pd-standard\"`.\n",
                    "willReplaceOnChanges": true
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options.\n",
                    "willReplaceOnChanges": true
                },
                "interface": {
                    "type": "string",
                    "description": "Specifies the disk interface to use for attaching this disk,\nwhich is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI\nand the request will fail if you attempt to attach a persistent disk in any other format\nthan SCSI. Local SSDs can use either NVME or SCSI.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of ket/value label pairs to assign to disk created from\nthis template\n",
                    "willReplaceOnChanges": true
                },
                "mode": {
                    "type": "string",
                    "description": "The mode in which to attach this disk, either READ_WRITE\nor READ_ONLY. If you are attaching or creating a boot disk, this must\nread-write mode.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. For more details, see the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk) or the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks) depending on the selected disk_type.\n",
                    "willReplaceOnChanges": true
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).\n",
                    "willReplaceOnChanges": true
                },
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of key/value resource manager tag pairs to bind to this disk. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                },
                "resourcePolicies": {
                    "type": "string",
                    "description": "- A list (short name or id) of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.\n",
                    "willReplaceOnChanges": true
                },
                "source": {
                    "type": "string",
                    "description": "The name (**not self_link**)\nof the disk (such as those managed by \u003cspan pulumi-lang-nodejs=\"`gcp.compute.Disk`\" pulumi-lang-dotnet=\"`gcp.compute.Disk`\" pulumi-lang-go=\"`compute.Disk`\" pulumi-lang-python=\"`compute.Disk`\" pulumi-lang-yaml=\"`gcp.compute.Disk`\" pulumi-lang-java=\"`gcp.compute.Disk`\" pulumi-lang-hcl=\"`google_compute_disk`\"\u003e`gcp.compute.Disk`\u003c/span\u003e) to attach.\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceImage`\" pulumi-lang-dotnet=\"`SourceImage`\" pulumi-lang-go=\"`sourceImage`\" pulumi-lang-python=\"`source_image`\" pulumi-lang-yaml=\"`sourceImage`\" pulumi-lang-java=\"`sourceImage`\" pulumi-lang-hcl=\"`source_image`\"\u003e`sourceImage`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`sourceSnapshot`\" pulumi-lang-dotnet=\"`SourceSnapshot`\" pulumi-lang-go=\"`sourceSnapshot`\" pulumi-lang-python=\"`source_snapshot`\" pulumi-lang-yaml=\"`sourceSnapshot`\" pulumi-lang-java=\"`sourceSnapshot`\" pulumi-lang-hcl=\"`source_snapshot`\"\u003e`sourceSnapshot`\u003c/span\u003e is **required** in a disk block unless the disk type is `local-ssd`. Check the API [docs](https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates/insert) for details.\n",
                    "willReplaceOnChanges": true
                },
                "sourceImage": {
                    "type": "string",
                    "description": "The image from which to\ninitialize this disk. This can be one of: the image's \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e,\n`projects/{project}/global/images/{image}`,\n`projects/{project}/global/images/family/{family}`, `global/images/{image}`,\n`global/images/family/{family}`, `family/{family}`, `{project}/{family}`,\n`{project}/{image}`, `{family}`, or `{image}`.\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceImage`\" pulumi-lang-dotnet=\"`SourceImage`\" pulumi-lang-go=\"`sourceImage`\" pulumi-lang-python=\"`source_image`\" pulumi-lang-yaml=\"`sourceImage`\" pulumi-lang-java=\"`sourceImage`\" pulumi-lang-hcl=\"`source_image`\"\u003e`sourceImage`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`sourceSnapshot`\" pulumi-lang-dotnet=\"`SourceSnapshot`\" pulumi-lang-go=\"`sourceSnapshot`\" pulumi-lang-python=\"`source_snapshot`\" pulumi-lang-yaml=\"`sourceSnapshot`\" pulumi-lang-java=\"`sourceSnapshot`\" pulumi-lang-hcl=\"`source_snapshot`\"\u003e`sourceSnapshot`\u003c/span\u003e is **required** in a disk block unless the disk type is `local-ssd`. Check the API [docs](https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates/insert) for details.\n",
                    "willReplaceOnChanges": true
                },
                "sourceImageEncryptionKey": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateDiskSourceImageEncryptionKey:RegionInstanceTemplateDiskSourceImageEncryptionKey",
                    "description": "The customer-supplied encryption\nkey of the source image. Required if the source image is protected by a\ncustomer-supplied encryption key.\n\nInstance templates do not store customer-supplied encryption keys, so you\ncannot create disks for instances in a managed instance group if the source\nimages are encrypted with your own keys. Structure\ndocumented below.\n",
                    "willReplaceOnChanges": true
                },
                "sourceSnapshot": {
                    "type": "string",
                    "description": "The source snapshot to create this disk.\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceImage`\" pulumi-lang-dotnet=\"`SourceImage`\" pulumi-lang-go=\"`sourceImage`\" pulumi-lang-python=\"`source_image`\" pulumi-lang-yaml=\"`sourceImage`\" pulumi-lang-java=\"`sourceImage`\" pulumi-lang-hcl=\"`source_image`\"\u003e`sourceImage`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`sourceSnapshot`\" pulumi-lang-dotnet=\"`SourceSnapshot`\" pulumi-lang-go=\"`sourceSnapshot`\" pulumi-lang-python=\"`source_snapshot`\" pulumi-lang-yaml=\"`sourceSnapshot`\" pulumi-lang-java=\"`sourceSnapshot`\" pulumi-lang-hcl=\"`source_snapshot`\"\u003e`sourceSnapshot`\u003c/span\u003e is **required** in a disk block unless the disk type is `local-ssd`. Check the API [docs](https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates/insert) for details.\n",
                    "willReplaceOnChanges": true
                },
                "sourceSnapshotEncryptionKey": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateDiskSourceSnapshotEncryptionKey:RegionInstanceTemplateDiskSourceSnapshotEncryptionKey",
                    "description": "The customer-supplied encryption\nkey of the source snapshot. Structure\ndocumented below.\n",
                    "willReplaceOnChanges": true
                },
                "storagePool": {
                    "type": "string",
                    "description": "The URL of the storage pool in which the new disk is created.\nFor example:\n* `https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/storagePools/{storagePool}`\n* `/projects/{project}/zones/{zone}/storagePools/{storagePool}`\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of GCE disk, can be either `\"SCRATCH\"` or\n`\"PERSISTENT\"`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "architecture",
                        "boot",
                        "deviceName",
                        "diskSizeGb",
                        "diskType",
                        "interface",
                        "mode",
                        "provisionedIops",
                        "provisionedThroughput",
                        "sourceImage",
                        "type"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceTemplateDiskDiskEncryptionKey:RegionInstanceTemplateDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the\nencryption request for the given KMS key. If absent, the Compute Engine\ndefault service account is used.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceTemplateDiskSourceImageEncryptionKey:RegionInstanceTemplateDiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is\nstored in Google Cloud KMS. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the\nencryption request for the given KMS key. If absent, the Compute Engine\ndefault service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "A 256-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption),\nencoded in [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nto decrypt the given image. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) to decrypt the given image. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceTemplateDiskSourceSnapshotEncryptionKey:RegionInstanceTemplateDiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is\nstored in Google Cloud KMS. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the\nencryption request for the given KMS key. If absent, the Compute Engine\ndefault service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "A 256-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption),\nencoded in [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nto decrypt this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) to decrypt this snapshot. Only one of \u003cspan pulumi-lang-nodejs=\"`kmsKeySelfLink`\" pulumi-lang-dotnet=\"`KmsKeySelfLink`\" pulumi-lang-go=\"`kmsKeySelfLink`\" pulumi-lang-python=\"`kms_key_self_link`\" pulumi-lang-yaml=\"`kmsKeySelfLink`\" pulumi-lang-java=\"`kmsKeySelfLink`\" pulumi-lang-hcl=\"`kms_key_self_link`\"\u003e`kmsKeySelfLink`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsaEncryptedKey`\" pulumi-lang-dotnet=\"`RsaEncryptedKey`\" pulumi-lang-go=\"`rsaEncryptedKey`\" pulumi-lang-python=\"`rsa_encrypted_key`\" pulumi-lang-yaml=\"`rsaEncryptedKey`\" pulumi-lang-java=\"`rsaEncryptedKey`\" pulumi-lang-hcl=\"`rsa_encrypted_key`\"\u003e`rsaEncryptedKey`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rawKey`\" pulumi-lang-dotnet=\"`RawKey`\" pulumi-lang-go=\"`rawKey`\" pulumi-lang-python=\"`raw_key`\" pulumi-lang-yaml=\"`rawKey`\" pulumi-lang-java=\"`rawKey`\" pulumi-lang-hcl=\"`raw_key`\"\u003e`rawKey`\u003c/span\u003e\nmay be set.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceTemplateGuestAccelerator:RegionInstanceTemplateGuestAccelerator": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource to expose to this instance. E.g. `nvidia-tesla-k80`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "count",
                "type"
            ]
        },
        "gcp:compute/RegionInstanceTemplateNetworkInterface:RegionInstanceTemplateNetworkInterface": {
            "properties": {
                "accessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceTemplateNetworkInterfaceAccessConfig:RegionInstanceTemplateNetworkInterfaceAccessConfig"
                    },
                    "description": "Access configurations, i.e. IPs via which this\ninstance can be accessed via the Internet. Omit to ensure that the instance\nis not accessible from the Internet (this means that ssh provisioners will\nnot work unless you are running Terraform can send traffic to the instance's\nnetwork (e.g. via tunnel or because it is running on another cloud instance\non that network). This block can be specified once per \u003cspan pulumi-lang-nodejs=\"`networkInterface`\" pulumi-lang-dotnet=\"`NetworkInterface`\" pulumi-lang-go=\"`networkInterface`\" pulumi-lang-python=\"`network_interface`\" pulumi-lang-yaml=\"`networkInterface`\" pulumi-lang-java=\"`networkInterface`\" pulumi-lang-hcl=\"`network_interface`\"\u003e`networkInterface`\u003c/span\u003e. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "aliasIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceTemplateNetworkInterfaceAliasIpRange:RegionInstanceTemplateNetworkInterfaceAliasIpRange"
                    },
                    "description": "An\narray of alias IP ranges for this network interface. Can only be specified for network\ninterfaces on subnet-mode networks. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "aliasIpv6Ranges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceTemplateNetworkInterfaceAliasIpv6Range:RegionInstanceTemplateNetworkInterfaceAliasIpv6Range"
                    },
                    "description": "[Beta] An\narray of alias IPv6 ranges for this network interface. Can only be specified for network\ninterfaces on subnet-mode networks. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "igmpQuery": {
                    "type": "string",
                    "description": "Indicates whether igmp query is enabled on the network interface or not. If enabled, also indicates the version of IGMP supported.\n"
                },
                "internalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "The prefix length of the primary internal IPv6 range.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6AccessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceTemplateNetworkInterfaceIpv6AccessConfig:RegionInstanceTemplateNetworkInterfaceIpv6AccessConfig"
                    },
                    "description": "An array of IPv6 access configurations for this interface.\nCurrently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig\nspecified, then this instance will have no external IPv6 Internet access. Structure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.\n",
                    "willReplaceOnChanges": true
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance template. If you leave\nthis blank, Terraform will auto-generate a unique name.\n",
                    "willReplaceOnChanges": true
                },
                "network": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the network to attach this interface to.\nUse \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\" pulumi-lang-hcl=\"`network`\"\u003e`network`\u003c/span\u003e attribute for Legacy or Auto subnetted networks and\n\u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e for custom subnetted networks.\n",
                    "willReplaceOnChanges": true
                },
                "networkAttachment": {
                    "type": "string",
                    "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.\n",
                    "willReplaceOnChanges": true
                },
                "networkIp": {
                    "type": "string",
                    "description": "The private IP address to assign to the instance. If\nempty, the address will be automatically assigned.\n",
                    "willReplaceOnChanges": true
                },
                "nicType": {
                    "type": "string",
                    "description": "The type of vNIC to be used on this interface. Possible values: GVNIC, VIRTIO_NET, MRDMA, IRDMA, IDPF.\n",
                    "willReplaceOnChanges": true
                },
                "parentNicName": {
                    "type": "string",
                    "description": "Name of the parent network interface of a dynamic network interface.\n"
                },
                "queueCount": {
                    "type": "integer",
                    "description": "The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.\n",
                    "willReplaceOnChanges": true
                },
                "stackType": {
                    "type": "string",
                    "description": "The stack type for this network interface to identify whether the IPv6 feature is enabled or not. Values are IPV4_IPV6, IPV6_ONLY or IPV4_ONLY. If not specified, IPV4_ONLY will be used.\n",
                    "willReplaceOnChanges": true
                },
                "subnetwork": {
                    "type": "string",
                    "description": "the name of the subnetwork to attach this interface\nto. The subnetwork must exist in the same \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\" pulumi-lang-hcl=\"`region`\"\u003e`region`\u003c/span\u003e this instance will be\ncreated in. Either \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\" pulumi-lang-hcl=\"`network`\"\u003e`network`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e must be provided.\n",
                    "willReplaceOnChanges": true
                },
                "subnetworkProject": {
                    "type": "string",
                    "description": "The ID of the project in which the subnetwork belongs.\nIf it is not provided, the provider project is used.\n",
                    "willReplaceOnChanges": true
                },
                "vlan": {
                    "type": "integer",
                    "description": "VLAN tag of a dynamic network interface, must be an integer in the range from 2 to 255 inclusively.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "igmpQuery",
                        "internalIpv6PrefixLength",
                        "ipv6AccessConfigs",
                        "ipv6AccessType",
                        "ipv6Address",
                        "name",
                        "network",
                        "networkAttachment",
                        "parentNicName",
                        "stackType",
                        "subnetwork",
                        "subnetworkProject"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceTemplateNetworkInterfaceAccessConfig:RegionInstanceTemplateNetworkInterfaceAccessConfig": {
            "properties": {
                "natIp": {
                    "type": "string",
                    "description": "The IP address that will be 1:1 mapped to the instance's\nnetwork ip. If not given, one will be generated.\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "The service-level to be provided for IPv6 traffic when the\nsubnet has an external subnet. Only PREMIUM and STANDARD tier is valid for IPv6.\n",
                    "willReplaceOnChanges": true
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "natIp",
                        "networkTier",
                        "publicPtrDomainName"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceTemplateNetworkInterfaceAliasIpRange:RegionInstanceTemplateNetworkInterfaceAliasIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range\nmust belong to the specified subnetwork and cannot contain IP addresses reserved by\nsystem or used by other network interfaces. At the time of writing only a\nnetmask (e.g. /24) may be supplied, with a CIDR format resulting in an API\nerror.\n",
                    "willReplaceOnChanges": true
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying\nthe secondary range from which to allocate the IP CIDR range for this alias IP\nrange. If left unspecified, the primary range of the subnetwork will be used.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ]
        },
        "gcp:compute/RegionInstanceTemplateNetworkInterfaceAliasIpv6Range:RegionInstanceTemplateNetworkInterfaceAliasIpv6Range": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IPv6 range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /96) may be supplied, with a CIDR format resulting in an API error.\n",
                    "willReplaceOnChanges": true
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IPv6 range. If left unspecified, the primary range of the subnetwork will be used.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange"
            ]
        },
        "gcp:compute/RegionInstanceTemplateNetworkInterfaceIpv6AccessConfig:RegionInstanceTemplateNetworkInterfaceIpv6AccessConfig": {
            "properties": {
                "externalIpv6": {
                    "type": "string",
                    "description": "The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.\n",
                    "willReplaceOnChanges": true
                },
                "externalIpv6PrefixLength": {
                    "type": "string",
                    "description": "The prefix length of the external IPv6 range.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance template. If you leave\nthis blank, Terraform will auto-generate a unique name.\n",
                    "willReplaceOnChanges": true
                },
                "networkTier": {
                    "type": "string",
                    "description": "The service-level to be provided for IPv6 traffic when the subnet has an external subnet. Only PREMIUM tier is valid for IPv6\n",
                    "willReplaceOnChanges": true
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The domain name to be used when creating DNSv6 records for the external IPv6 ranges.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "networkTier"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "externalIpv6",
                        "externalIpv6PrefixLength",
                        "name",
                        "networkTier",
                        "publicPtrDomainName"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceTemplateNetworkPerformanceConfig:RegionInstanceTemplateNetworkPerformanceConfig": {
            "properties": {
                "totalEgressBandwidthTier": {
                    "type": "string",
                    "description": "The egress bandwidth tier to enable. Possible values: TIER_1, DEFAULT\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "totalEgressBandwidthTier"
            ]
        },
        "gcp:compute/RegionInstanceTemplateReservationAffinity:RegionInstanceTemplateReservationAffinity": {
            "properties": {
                "specificReservation": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateReservationAffinitySpecificReservation:RegionInstanceTemplateReservationAffinitySpecificReservation",
                    "description": "Specifies the label selector for the reservation to use..\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of reservation from which this instance can consume resources.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/RegionInstanceTemplateReservationAffinitySpecificReservation:RegionInstanceTemplateReservationAffinitySpecificReservation": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.\n",
                    "willReplaceOnChanges": true
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "gcp:compute/RegionInstanceTemplateScheduling:RegionInstanceTemplateScheduling": {
            "properties": {
                "automaticRestart": {
                    "type": "boolean",
                    "description": "Specifies whether the instance should be\nautomatically restarted if it is terminated by Compute Engine (not\nterminated by a user). This defaults to true.\n",
                    "willReplaceOnChanges": true
                },
                "availabilityDomain": {
                    "type": "integer",
                    "description": "Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.\n",
                    "willReplaceOnChanges": true
                },
                "gracefulShutdown": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateSchedulingGracefulShutdown:RegionInstanceTemplateSchedulingGracefulShutdown",
                    "description": "Settings for the instance to perform a graceful shutdown.\n",
                    "willReplaceOnChanges": true
                },
                "hostErrorTimeoutSeconds": {
                    "type": "integer",
                    "description": "Beta Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.\n",
                    "willReplaceOnChanges": true
                },
                "instanceTerminationAction": {
                    "type": "string",
                    "description": "Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`.  Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot)\n",
                    "willReplaceOnChanges": true
                },
                "localSsdRecoveryTimeouts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeout:RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeout"
                    },
                    "description": "Specifies the maximum amount of time a Local Ssd Vm should wait while\n  recovery of the Local Ssd state is attempted. Its value should be in\n  between 0 and 168 hours with hour granularity and the default value being 1\n  hour.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC\n",
                    "willReplaceOnChanges": true
                },
                "maxRunDuration": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateSchedulingMaxRunDuration:RegionInstanceTemplateSchedulingMaxRunDuration",
                    "description": "The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in \u003cspan pulumi-lang-nodejs=\"`instanceTerminationAction`\" pulumi-lang-dotnet=\"`InstanceTerminationAction`\" pulumi-lang-go=\"`instanceTerminationAction`\" pulumi-lang-python=\"`instance_termination_action`\" pulumi-lang-yaml=\"`instanceTerminationAction`\" pulumi-lang-java=\"`instanceTerminationAction`\" pulumi-lang-hcl=\"`instance_termination_action`\"\u003e`instanceTerminationAction`\u003c/span\u003e. Only support `DELETE` \u003cspan pulumi-lang-nodejs=\"`instanceTerminationAction`\" pulumi-lang-dotnet=\"`InstanceTerminationAction`\" pulumi-lang-go=\"`instanceTerminationAction`\" pulumi-lang-python=\"`instance_termination_action`\" pulumi-lang-yaml=\"`instanceTerminationAction`\" pulumi-lang-java=\"`instanceTerminationAction`\" pulumi-lang-hcl=\"`instance_termination_action`\"\u003e`instanceTerminationAction`\u003c/span\u003e at this point. Structure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "minNodeCpus": {
                    "type": "integer",
                    "description": "Minimum number of cpus for the instance.\n",
                    "willReplaceOnChanges": true
                },
                "nodeAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionInstanceTemplateSchedulingNodeAffinity:RegionInstanceTemplateSchedulingNodeAffinity"
                    },
                    "description": "Specifies node affinities or anti-affinities\nto determine which sole-tenant nodes your instances and managed instance\ngroups will use as host systems. Read more on sole-tenant node creation\n[here](https://cloud.google.com/compute/docs/nodes/create-nodes).\nStructure documented below.\n",
                    "willReplaceOnChanges": true
                },
                "onHostMaintenance": {
                    "type": "string",
                    "description": "Defines the maintenance behavior for this\ninstance.\n",
                    "willReplaceOnChanges": true
                },
                "onInstanceStopAction": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateSchedulingOnInstanceStopAction:RegionInstanceTemplateSchedulingOnInstanceStopAction",
                    "description": "Defines the behaviour for instances with the instance_termination_action.\n",
                    "willReplaceOnChanges": true
                },
                "preemptible": {
                    "type": "boolean",
                    "description": "Allows instance to be preempted. This defaults to\nfalse. Read more on this\n[here](https://cloud.google.com/compute/docs/instances/preemptible).\n",
                    "willReplaceOnChanges": true
                },
                "preemptionNoticeDuration": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateSchedulingPreemptionNoticeDuration:RegionInstanceTemplateSchedulingPreemptionNoticeDuration",
                    "description": "The duration of the notice that the instance will receive before it is preempted.\n"
                },
                "provisioningModel": {
                    "type": "string",
                    "description": "Describe the type of preemptible VM. This field accepts the value `STANDARD` or `SPOT`. If the value is `STANDARD`, there will be no discount. If this   is set to `SPOT`,\n\u003cspan pulumi-lang-nodejs=\"`preemptible`\" pulumi-lang-dotnet=\"`Preemptible`\" pulumi-lang-go=\"`preemptible`\" pulumi-lang-python=\"`preemptible`\" pulumi-lang-yaml=\"`preemptible`\" pulumi-lang-java=\"`preemptible`\" pulumi-lang-hcl=\"`preemptible`\"\u003e`preemptible`\u003c/span\u003e should be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\" pulumi-lang-hcl=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`automaticRestart`\" pulumi-lang-dotnet=\"`AutomaticRestart`\" pulumi-lang-go=\"`automaticRestart`\" pulumi-lang-python=\"`automatic_restart`\" pulumi-lang-yaml=\"`automaticRestart`\" pulumi-lang-java=\"`automaticRestart`\" pulumi-lang-hcl=\"`automatic_restart`\"\u003e`automaticRestart`\u003c/span\u003e should be\n\u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\" pulumi-lang-hcl=\"`false`\"\u003e`false`\u003c/span\u003e. For more info about\n`SPOT`, read [here](https://cloud.google.com/compute/docs/instances/spot)\n",
                    "willReplaceOnChanges": true
                },
                "skipGuestOsShutdown": {
                    "type": "boolean",
                    "description": "Default is false and there will be 120 seconds between GCE ACPI G2 Soft Off and ACPI G3 Mechanical Off for Standard VMs and 30 seconds for Spot VMs.\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Specifies the timestamp, when the instance will be terminated, in RFC3339 text format. If specified, the instance termination action will be performed at the termination time.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "onHostMaintenance",
                        "provisioningModel"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceTemplateSchedulingGracefulShutdown:RegionInstanceTemplateSchedulingGracefulShutdown": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Opts-in for graceful shutdown.\n",
                    "willReplaceOnChanges": true
                },
                "maxDuration": {
                    "$ref": "#/types/gcp:compute/RegionInstanceTemplateSchedulingGracefulShutdownMaxDuration:RegionInstanceTemplateSchedulingGracefulShutdownMaxDuration",
                    "description": "The time allotted for the instance to gracefully shut down.\nIf the graceful shutdown isn't complete after this time, then the instance\ntransitions to the STOPPING state. Structure is documented below:\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:compute/RegionInstanceTemplateSchedulingGracefulShutdownMaxDuration:RegionInstanceTemplateSchedulingGracefulShutdownMaxDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nThe value must be between 1 and 3600, which is 3,600 seconds (one hour).`\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeout:RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionInstanceTemplateSchedulingMaxRunDuration:RegionInstanceTemplateSchedulingMaxRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to\n315,576,000,000 inclusive. Note: these bounds are computed from: 60\nsec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionInstanceTemplateSchedulingNodeAffinity:RegionInstanceTemplateSchedulingNodeAffinity": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key for the node affinity label.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator. Can be `IN` for node-affinities\nor `NOT_IN` for anti-affinities.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "operator",
                "values"
            ]
        },
        "gcp:compute/RegionInstanceTemplateSchedulingOnInstanceStopAction:RegionInstanceTemplateSchedulingOnInstanceStopAction": {
            "properties": {
                "discardLocalSsd": {
                    "type": "boolean",
                    "description": "If true, the contents of any attached Local SSD disks will be discarded.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstanceTemplateSchedulingPreemptionNoticeDuration:RegionInstanceTemplateSchedulingPreemptionNoticeDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented with a 0\n\u003cspan pulumi-lang-nodejs=\"`seconds`\" pulumi-lang-dotnet=\"`Seconds`\" pulumi-lang-go=\"`seconds`\" pulumi-lang-python=\"`seconds`\" pulumi-lang-yaml=\"`seconds`\" pulumi-lang-java=\"`seconds`\" pulumi-lang-hcl=\"`seconds`\"\u003e`seconds`\u003c/span\u003e field and a positive \u003cspan pulumi-lang-nodejs=\"`nanos`\" pulumi-lang-dotnet=\"`Nanos`\" pulumi-lang-go=\"`nanos`\" pulumi-lang-python=\"`nanos`\" pulumi-lang-yaml=\"`nanos`\" pulumi-lang-java=\"`nanos`\" pulumi-lang-hcl=\"`nanos`\"\u003e`nanos`\u003c/span\u003e field. Must be from 0 to\n999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to\n315,576,000,000 inclusive. Note: these bounds are computed from: 60\nsec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionInstanceTemplateServiceAccount:RegionInstanceTemplateServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "The service account e-mail address. If not given, the\ndefault Google Compute Engine service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service scopes. Both OAuth2 URLs and gcloud\nshort names are supported. To allow full access to all Cloud APIs, use the\n`cloud-platform` scope. See a complete list of scopes [here](https://cloud.google.com/sdk/gcloud/reference/alpha/compute/instances/set-scopes#--scopes).\n\nThe [service accounts documentation](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam)\nexplains that access scopes are the legacy method of specifying permissions for your instance.\nTo follow best practices you should create a dedicated service account with the minimum permissions the VM requires.\nTo use a dedicated service account this field should be configured as a list containing the `cloud-platform` scope.\nSee [Authenticate workloads using service accounts best practices](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#best_practices)\nand [Best practices for using service accounts](https://cloud.google.com/iam/docs/best-practices-service-accounts#single-purpose).\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "scopes"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "email",
                        "scopes"
                    ]
                }
            }
        },
        "gcp:compute/RegionInstanceTemplateShieldedInstanceConfig:RegionInstanceTemplateShieldedInstanceConfig": {
            "properties": {
                "enableIntegrityMonitoring": {
                    "type": "boolean",
                    "description": "- Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.\n",
                    "willReplaceOnChanges": true
                },
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "- Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.\n",
                    "willReplaceOnChanges": true
                },
                "enableVtpm": {
                    "type": "boolean",
                    "description": "- Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstantSnapshotIamBindingCondition:RegionInstantSnapshotIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/RegionInstantSnapshotIamMemberCondition:RegionInstantSnapshotIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/RegionInstantSnapshotParams:RegionInstantSnapshotParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the instant snapshot. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionInstantSnapshotResourceStatus:RegionInstantSnapshotResourceStatus": {
            "properties": {
                "storageSizeBytes": {
                    "type": "integer",
                    "description": "(Output)\nThe size of the storage used by the instant snapshot.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "storageSizeBytes"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkEndpointGroupAppEngine:RegionNetworkEndpointGroupAppEngine": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "Optional serving service.\nThe service name must be 1-63 characters long, and comply with RFC1035.\nExample value: \"default\", \"my-service\".\n",
                    "willReplaceOnChanges": true
                },
                "urlMask": {
                    "type": "string",
                    "description": "A template to parse service and version fields from a request URL.\nURL mask allows for routing to multiple App Engine services without\nhaving to create multiple Network Endpoint Groups and backend services.\nFor example, the request URLs \"foo1-dot-appname.appspot.com/v1\" and\n\"foo1-dot-appname.appspot.com/v2\" can be backed by the same Serverless NEG with\nURL mask \"-dot-appname.appspot.com/\". The URL mask will parse\nthem to { service = \"foo1\", version = \"v1\" } and { service = \"foo1\", version = \"v2\" } respectively.\n",
                    "willReplaceOnChanges": true
                },
                "version": {
                    "type": "string",
                    "description": "Optional serving version.\nThe version must be 1-63 characters long, and comply with RFC1035.\nExample value: \"v1\", \"v2\".\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionNetworkEndpointGroupCloudFunction:RegionNetworkEndpointGroupCloudFunction": {
            "properties": {
                "function": {
                    "type": "string",
                    "description": "A user-defined name of the Cloud Function.\nThe function name is case-sensitive and must be 1-63 characters long.\nExample value: \"func1\".\n",
                    "willReplaceOnChanges": true
                },
                "urlMask": {
                    "type": "string",
                    "description": "A template to parse function field from a request URL. URL mask allows\nfor routing to multiple Cloud Functions without having to create\nmultiple Network Endpoint Groups and backend services.\nFor example, request URLs \"mydomain.com/function1\" and \"mydomain.com/function2\"\ncan be backed by the same Serverless NEG with URL mask \"/\". The URL mask\nwill parse them to { function = \"function1\" } and { function = \"function2\" } respectively.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionNetworkEndpointGroupCloudRun:RegionNetworkEndpointGroupCloudRun": {
            "properties": {
                "service": {
                    "type": "string",
                    "description": "Cloud Run service is the main resource of Cloud Run.\nThe service must be 1-63 characters long, and comply with RFC1035.\nExample value: \"run-service\".\n",
                    "willReplaceOnChanges": true
                },
                "tag": {
                    "type": "string",
                    "description": "Cloud Run tag represents the \"named-revision\" to provide\nadditional fine-grained traffic routing information.\nThe tag must be 1-63 characters long, and comply with RFC1035.\nExample value: \"revision-0010\".\n",
                    "willReplaceOnChanges": true
                },
                "urlMask": {
                    "type": "string",
                    "description": "A template to parse service and tag fields from a request URL.\nURL mask allows for routing to multiple Run services without having\nto create multiple network endpoint groups and backend services.\nFor example, request URLs \"foo1.domain.com/bar1\" and \"foo1.domain.com/bar2\"\nan be backed by the same Serverless Network Endpoint Group (NEG) with\nURL mask \".domain.com/\". The URL mask will parse them to { service=\"bar1\", tag=\"foo1\" }\nand { service=\"bar2\", tag=\"foo2\" } respectively.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionNetworkEndpointGroupPscData:RegionNetworkEndpointGroupPscData": {
            "properties": {
                "producerPort": {
                    "type": "string",
                    "description": "The PSC producer port to use when consumer PSC NEG connects to a producer. If\nthis flag isn't specified for a PSC NEG with endpoint type\nprivate-service-connect, then PSC NEG will be connected to a first port in the\navailable PSC producer port range.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionNetworkEndpointGroupServerlessDeployment:RegionNetworkEndpointGroupServerlessDeployment": {
            "properties": {
                "platform": {
                    "type": "string",
                    "description": "The platform of the NEG backend target(s). Possible values:\nAPI Gateway: apigateway.googleapis.com\n",
                    "willReplaceOnChanges": true
                },
                "resource": {
                    "type": "string",
                    "description": "The user-defined name of the workload/instance. This value must be provided explicitly or in the urlMask.\nThe resource identified by this value is platform-specific and is as follows: API Gateway: The gateway ID, App Engine: The service name,\nCloud Functions: The function name, Cloud Run: The service name\n",
                    "willReplaceOnChanges": true
                },
                "urlMask": {
                    "type": "string",
                    "description": "A template to parse platform-specific fields from a request URL. URL mask allows for routing to multiple resources\non the same serverless platform without having to create multiple Network Endpoint Groups and backend resources.\nThe fields parsed by this template are platform-specific and are as follows: API Gateway: The gateway ID,\nApp Engine: The service and version, Cloud Functions: The function name, Cloud Run: The service and tag\n",
                    "willReplaceOnChanges": true
                },
                "version": {
                    "type": "string",
                    "description": "The optional resource version. The version identified by this value is platform-specific and is follows:\nAPI Gateway: Unused, App Engine: The service version, Cloud Functions: Unused, Cloud Run: The service tag\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "platform"
            ]
        },
        "gcp:compute/RegionNetworkFirewallPolicyRuleMatch:RegionNetworkFirewallPolicyRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.\n"
                },
                "destNetworkContext": {
                    "type": "string",
                    "description": "Network context of the traffic destination.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic destination.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of dest region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyRuleMatchLayer4Config:RegionNetworkFirewallPolicyRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.\n"
                },
                "srcNetworkContext": {
                    "type": "string",
                    "description": "Network context of the traffic source.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic source.\nPossible values are: `UNSPECIFIED`, `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Networks of the traffic source. It can be either a full or partial url.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex.\"US\" Maximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyRuleMatchSrcSecureTag:RegionNetworkFirewallPolicyRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.\nStructure is documented below.\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-dotnet=\"\"NestedMatchLayer4Configs\"\" pulumi-lang-go=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-python=\"\"nested_match_layer4_configs\"\" pulumi-lang-yaml=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-java=\"\"nestedMatchLayer4Configs\"\" pulumi-lang-hcl=\"\"nested_match_layer4_configs\"\"\u003e\"nestedMatchLayer4Configs\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Configs`\" pulumi-lang-dotnet=\"`Layer4Configs`\" pulumi-lang-go=\"`layer4Configs`\" pulumi-lang-python=\"`layer4_configs`\" pulumi-lang-yaml=\"`layer4Configs`\" pulumi-lang-java=\"`layer4Configs`\" pulumi-lang-hcl=\"`layer4_configs`\"\u003e`layer4Configs`\u003c/span\u003e block supports:\n"
                }
            },
            "type": "object",
            "required": [
                "layer4Configs"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destNetworkContext",
                        "destNetworkScope",
                        "layer4Configs",
                        "srcNetworkContext",
                        "srcNetworkScope"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyRuleMatchLayer4Config:RegionNetworkFirewallPolicyRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule.\nThis value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "required": [
                "ipProtocol"
            ]
        },
        "gcp:compute/RegionNetworkFirewallPolicyRuleMatchSrcSecureTag:RegionNetworkFirewallPolicyRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyRuleTargetSecureTag:RegionNetworkFirewallPolicyRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\nState of the secure tag, either EFFECTIVE or INEFFECTIVE. A secure tag is INEFFECTIVE when it is deleted or its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRule:RegionNetworkFirewallPolicyWithRulesPredefinedRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "(Output)\nThe Action to perform when the client connection triggers the rule. Can currently be either\n\"allow\", \"deny\", \u003cspan pulumi-lang-nodejs=\"\"applySecurityProfileGroup\"\" pulumi-lang-dotnet=\"\"ApplySecurityProfileGroup\"\" pulumi-lang-go=\"\"applySecurityProfileGroup\"\" pulumi-lang-python=\"\"apply_security_profile_group\"\" pulumi-lang-yaml=\"\"applySecurityProfileGroup\"\" pulumi-lang-java=\"\"applySecurityProfileGroup\"\" pulumi-lang-hcl=\"\"apply_security_profile_group\"\"\u003e\"applySecurityProfileGroup\"\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"\"gotoNext\"\" pulumi-lang-dotnet=\"\"GotoNext\"\" pulumi-lang-go=\"\"gotoNext\"\" pulumi-lang-python=\"\"goto_next\"\" pulumi-lang-yaml=\"\"gotoNext\"\" pulumi-lang-java=\"\"gotoNext\"\" pulumi-lang-hcl=\"\"goto_next\"\"\u003e\"gotoNext\"\u003c/span\u003e.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "(Output)\nThe direction in which this rule applies. If unspecified an INGRESS rule is created.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "(Output)\nDenotes whether the firewall policy rule is disabled. When set to true,\nthe firewall policy rule is not enforced and traffic behaves as if it did\nnot exist. If this is unspecified, the firewall policy rule will be\nenabled.\n"
                },
                "enableLogging": {
                    "type": "boolean",
                    "description": "(Output)\nDenotes whether to enable logging for a particular rule.\nIf logging is enabled, logs will be exported to the\nconfigured export destination in Stackdriver.\n"
                },
                "matches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch:RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch"
                    },
                    "description": "(Output)\nA match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "(Output)\nAn integer indicating the priority of a rule in the list. The priority must be a value\nbetween 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the\nhighest priority and 2147483647 is the lowest priority.\n"
                },
                "ruleName": {
                    "type": "string",
                    "description": "(Output)\nAn optional name for the rule. This field is not a unique identifier\nand can be updated.\n"
                },
                "securityProfileGroup": {
                    "type": "string",
                    "description": "(Output)\nA fully-qualified URL of a SecurityProfile resource instance.\nExample:\nhttps://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group\nMust be specified if action is 'apply_security_profile_group'.\n"
                },
                "targetSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleTargetSecureTag:RegionNetworkFirewallPolicyWithRulesPredefinedRuleTargetSecureTag"
                    },
                    "description": "(Output)\nA list of secure tags that controls which instances the firewall rule\napplies to. If \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, then the\nfirewall rule applies only to instances in the VPC network that have one\nof those EFFECTIVE secure tags, if all the\u003cspan pulumi-lang-nodejs=\" targetSecureTag \" pulumi-lang-dotnet=\" TargetSecureTag \" pulumi-lang-go=\" targetSecureTag \" pulumi-lang-python=\" target_secure_tag \" pulumi-lang-yaml=\" targetSecureTag \" pulumi-lang-java=\" targetSecureTag \" pulumi-lang-hcl=\" target_secure_tag \"\u003e targetSecureTag \u003c/span\u003eare in\nINEFFECTIVE state, then this rule will be ignored.\n\u003ccode\u003etargetSecureTag\u003c/code\u003e may not be set at the same time as\n\u003ccode\u003etargetServiceAccounts\u003c/code\u003e.\nIf neither \u003ccode\u003etargetServiceAccounts\u003c/code\u003e nor\n\u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, the firewall rule applies\nto all instances on the specified network.\nMaximum number of target label tags allowed is 256.\nStructure is documented below.\n"
                },
                "targetServiceAccounts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nA list of service accounts indicating the sets of\ninstances that are applied with this rule.\n"
                },
                "tlsInspect": {
                    "type": "boolean",
                    "description": "(Output)\nBoolean flag indicating if the traffic should be TLS decrypted.\nIt can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "description",
                        "direction",
                        "disabled",
                        "enableLogging",
                        "matches",
                        "priority",
                        "ruleName",
                        "securityProfileGroup",
                        "targetSecureTags",
                        "targetServiceAccounts",
                        "tlsInspect"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch:RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination.\nMaximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Destination IP address range in CIDR format. Required for\nEGRESS rules.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of destination region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchLayer4Config:RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source.\nMaximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source IP address range in CIDR format. Required for\nINGRESS rules.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag:RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-dotnet=\"\"NestedRuleMatchLayer4Config\"\" pulumi-lang-go=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-python=\"\"nested_rule_match_layer4_config\"\" pulumi-lang-yaml=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-java=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-hcl=\"\"nested_rule_match_layer4_config\"\"\u003e\"nestedRuleMatchLayer4Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Config`\" pulumi-lang-dotnet=\"`Layer4Config`\" pulumi-lang-go=\"`layer4Config`\" pulumi-lang-python=\"`layer4_config`\" pulumi-lang-yaml=\"`layer4Config`\" pulumi-lang-java=\"`layer4Config`\" pulumi-lang-hcl=\"`layer4_config`\"\u003e`layer4Config`\u003c/span\u003e block supports:\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic source.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "destAddressGroups",
                        "destFqdns",
                        "destIpRanges",
                        "destRegionCodes",
                        "destThreatIntelligences",
                        "layer4Configs",
                        "srcAddressGroups",
                        "srcFqdns",
                        "srcIpRanges",
                        "srcRegionCodes",
                        "srcSecureTags",
                        "srcThreatIntelligences"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchLayer4Config:RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "(Output)\nThe IP protocol to which this rule applies. The protocol\ntype is required when creating a firewall rule.\nThis value can either be one of the following well\nknown protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp),\nor the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nAn optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipProtocol",
                        "ports"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag:RegionNetworkFirewallPolicyWithRulesPredefinedRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesPredefinedRuleTargetSecureTag:RegionNetworkFirewallPolicyWithRulesPredefinedRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesRule:RegionNetworkFirewallPolicyWithRulesRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The Action to perform when the client connection triggers the rule. Can currently be either\n\"allow\", \"deny\", \u003cspan pulumi-lang-nodejs=\"\"applySecurityProfileGroup\"\" pulumi-lang-dotnet=\"\"ApplySecurityProfileGroup\"\" pulumi-lang-go=\"\"applySecurityProfileGroup\"\" pulumi-lang-python=\"\"apply_security_profile_group\"\" pulumi-lang-yaml=\"\"applySecurityProfileGroup\"\" pulumi-lang-java=\"\"applySecurityProfileGroup\"\" pulumi-lang-hcl=\"\"apply_security_profile_group\"\"\u003e\"applySecurityProfileGroup\"\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"\"gotoNext\"\" pulumi-lang-dotnet=\"\"GotoNext\"\" pulumi-lang-go=\"\"gotoNext\"\" pulumi-lang-python=\"\"goto_next\"\" pulumi-lang-yaml=\"\"gotoNext\"\" pulumi-lang-java=\"\"gotoNext\"\" pulumi-lang-hcl=\"\"goto_next\"\"\u003e\"gotoNext\"\u003c/span\u003e.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A description of the rule.\n"
                },
                "direction": {
                    "type": "string",
                    "description": "The direction in which this rule applies. If unspecified an INGRESS rule is created.\nPossible values are: `INGRESS`, `EGRESS`.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Denotes whether the firewall policy rule is disabled. When set to true,\nthe firewall policy rule is not enforced and traffic behaves as if it did\nnot exist. If this is unspecified, the firewall policy rule will be\nenabled.\n"
                },
                "enableLogging": {
                    "type": "boolean",
                    "description": "Denotes whether to enable logging for a particular rule.\nIf logging is enabled, logs will be exported to the\nconfigured export destination in Stackdriver.\n"
                },
                "match": {
                    "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleMatch:RegionNetworkFirewallPolicyWithRulesRuleMatch",
                    "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "An integer indicating the priority of a rule in the list. The priority must be a value\nbetween 0 and 2147483647. Rules are evaluated from highest to lowest priority where 0 is the\nhighest priority and 2147483647 is the lowest priority.\n"
                },
                "ruleName": {
                    "type": "string",
                    "description": "An optional name for the rule. This field is not a unique identifier\nand can be updated.\n"
                },
                "securityProfileGroup": {
                    "type": "string",
                    "description": "A fully-qualified URL of a SecurityProfile resource instance.\nExample:\nhttps://networksecurity.googleapis.com/v1/projects/{project}/locations/{location}/securityProfileGroups/my-security-profile-group\nMust be specified if action is 'apply_security_profile_group'.\n"
                },
                "targetSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleTargetSecureTag:RegionNetworkFirewallPolicyWithRulesRuleTargetSecureTag"
                    },
                    "description": "A list of secure tags that controls which instances the firewall rule\napplies to. If \u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, then the\nfirewall rule applies only to instances in the VPC network that have one\nof those EFFECTIVE secure tags, if all the\u003cspan pulumi-lang-nodejs=\" targetSecureTag \" pulumi-lang-dotnet=\" TargetSecureTag \" pulumi-lang-go=\" targetSecureTag \" pulumi-lang-python=\" target_secure_tag \" pulumi-lang-yaml=\" targetSecureTag \" pulumi-lang-java=\" targetSecureTag \" pulumi-lang-hcl=\" target_secure_tag \"\u003e targetSecureTag \u003c/span\u003eare in\nINEFFECTIVE state, then this rule will be ignored.\n\u003ccode\u003etargetSecureTag\u003c/code\u003e may not be set at the same time as\n\u003ccode\u003etargetServiceAccounts\u003c/code\u003e.\nIf neither \u003ccode\u003etargetServiceAccounts\u003c/code\u003e nor\n\u003ccode\u003etargetSecureTag\u003c/code\u003e are specified, the firewall rule applies\nto all instances on the specified network.\nMaximum number of target label tags allowed is 256.\nStructure is documented below.\n"
                },
                "targetServiceAccounts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service accounts indicating the sets of\ninstances that are applied with this rule.\n"
                },
                "tlsInspect": {
                    "type": "boolean",
                    "description": "Boolean flag indicating if the traffic should be TLS decrypted.\nIt can be set only if action = 'apply_security_profile_group' and cannot be set for other actions.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "match",
                "priority"
            ]
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleMatch:RegionNetworkFirewallPolicyWithRulesRuleMatch": {
            "properties": {
                "destAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic destination.\nMaximum number of destination address groups is 10.\n"
                },
                "destFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic destination. Maximum number of destination fqdn allowed is 100.\n"
                },
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Destination IP address range in CIDR format. Required for\nEGRESS rules.\n"
                },
                "destNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic destination.\nPossible values are: `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "destRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for destination\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of destination region codes allowed is 5000.\n"
                },
                "destThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic destination.\n"
                },
                "layer4Configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4Config:RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4Config"
                    },
                    "description": "Pairs of IP protocols and ports that the rule should match.\nStructure is documented below.\n"
                },
                "srcAddressGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Address groups which should be matched against the traffic source.\nMaximum number of source address groups is 10.\n"
                },
                "srcFqdns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Fully Qualified Domain Name (FQDN) which should be matched against\ntraffic source. Maximum number of source fqdn allowed is 100.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source IP address range in CIDR format. Required for\nINGRESS rules.\n"
                },
                "srcNetworkScope": {
                    "type": "string",
                    "description": "(Optional, Beta)\nNetwork scope of the traffic source.\nPossible values are: `INTERNET`, `INTRA_VPC`, `NON_INTERNET`, `VPC_NETWORKS`.\n"
                },
                "srcNetworks": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional, Beta)\nNetworks of the traffic source. It can be either a full or partial url.\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Region codes whose IP addresses will be used to match for source\nof traffic. Should be specified as 2 letter country code defined as per\nISO 3166 alpha-2 country codes. ex.\"US\"\nMaximum number of source region codes allowed is 5000.\n"
                },
                "srcSecureTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag:RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag"
                    },
                    "description": "List of secure tag values, which should be matched at the source\nof the traffic.\nFor INGRESS rule, if all the \u003ccode\u003esrcSecureTag\u003c/code\u003e are INEFFECTIVE,\nand there is no \u003ccode\u003esrcIpRange\u003c/code\u003e, this rule will be ignored.\nMaximum number of source tag values allowed is 256.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-dotnet=\"\"NestedRuleMatchLayer4Config\"\" pulumi-lang-go=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-python=\"\"nested_rule_match_layer4_config\"\" pulumi-lang-yaml=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-java=\"\"nestedRuleMatchLayer4Config\"\" pulumi-lang-hcl=\"\"nested_rule_match_layer4_config\"\"\u003e\"nestedRuleMatchLayer4Config\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer4Config`\" pulumi-lang-dotnet=\"`Layer4Config`\" pulumi-lang-go=\"`layer4Config`\" pulumi-lang-python=\"`layer4_config`\" pulumi-lang-yaml=\"`layer4Config`\" pulumi-lang-java=\"`layer4Config`\" pulumi-lang-hcl=\"`layer4_config`\"\u003e`layer4Config`\u003c/span\u003e block supports:\n"
                },
                "srcThreatIntelligences": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of Network Threat Intelligence lists.\nThe IPs in these lists will be matched against traffic source.\n"
                }
            },
            "type": "object",
            "required": [
                "layer4Configs"
            ]
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4Config:RegionNetworkFirewallPolicyWithRulesRuleMatchLayer4Config": {
            "properties": {
                "ipProtocol": {
                    "type": "string",
                    "description": "(Output)\nThe IP protocol to which this rule applies. The protocol\ntype is required when creating a firewall rule.\nThis value can either be one of the following well\nknown protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp),\nor the IP protocol number.\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nAn optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].\n"
                }
            },
            "type": "object",
            "required": [
                "ipProtocol"
            ]
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag:RegionNetworkFirewallPolicyWithRulesRuleMatchSrcSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/RegionNetworkFirewallPolicyWithRulesRuleTargetSecureTag:RegionNetworkFirewallPolicyWithRulesRuleTargetSecureTag": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the secure tag, created with TagManager's TagValue API.\n@pattern tagValues/[0-9]+\n"
                },
                "state": {
                    "type": "string",
                    "description": "(Output)\n[Output Only] State of the secure tag, either `EFFECTIVE` or\n`INEFFECTIVE`. A secure tag is `INEFFECTIVE` when it is deleted\nor its network is deleted.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "state"
                    ]
                }
            }
        },
        "gcp:compute/RegionPerInstanceConfigPreservedState:RegionPerInstanceConfigPreservedState": {
            "properties": {
                "disks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionPerInstanceConfigPreservedStateDisk:RegionPerInstanceConfigPreservedStateDisk"
                    },
                    "description": "Stateful disks for the instance.\nStructure is documented below.\n"
                },
                "externalIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionPerInstanceConfigPreservedStateExternalIp:RegionPerInstanceConfigPreservedStateExternalIp"
                    },
                    "description": "Preserved external IPs defined for this instance. This map is keyed with the name of the network interface.\nStructure is documented below.\n"
                },
                "internalIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionPerInstanceConfigPreservedStateInternalIp:RegionPerInstanceConfigPreservedStateInternalIp"
                    },
                    "description": "Preserved internal IPs defined for this instance. This map is keyed with the name of the network interface.\nStructure is documented below.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Preserved metadata defined for this instance. This is a list of key-\u003evalue pairs.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionPerInstanceConfigPreservedStateDisk:RegionPerInstanceConfigPreservedStateDisk": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": "A value that prescribes what should happen to the stateful disk when the VM instance is deleted.\nThe available options are `NEVER` and `ON_PERMANENT_INSTANCE_DELETION`.\n`NEVER` - detach the disk when the VM is deleted, but do not delete the disk.\n`ON_PERMANENT_INSTANCE_DELETION` will delete the stateful disk when the VM is permanently\ndeleted from the instance group.\nDefault value is `NEVER`.\nPossible values are: `NEVER`, `ON_PERMANENT_INSTANCE_DELETION`.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The mode of the disk.\nDefault value is `READ_WRITE`.\nPossible values are: `READ_ONLY`, `READ_WRITE`.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The URI of an existing persistent disk to attach under the specified device-name in the format\n`projects/project-id/zones/zone/disks/disk-name`.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceName",
                "source"
            ]
        },
        "gcp:compute/RegionPerInstanceConfigPreservedStateExternalIp:RegionPerInstanceConfigPreservedStateExternalIp": {
            "properties": {
                "autoDelete": {
                    "type": "string",
                    "description": "These stateful IPs will never be released during autohealing, update or VM instance recreate operations. This flag is used to configure if the IP reservation should be deleted after it is no longer used by the group, e.g. when the given instance or the whole group is deleted.\nDefault value is `NEVER`.\nPossible values are: `NEVER`, `ON_PERMANENT_INSTANCE_DELETION`.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "ipAddress": {
                    "$ref": "#/types/gcp:compute/RegionPerInstanceConfigPreservedStateExternalIpIpAddress:RegionPerInstanceConfigPreservedStateExternalIpIpAddress",
                    "description": "Ip address representation\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "interfaceName"
            ]
        },
        "gcp:compute/RegionPerInstanceConfigPreservedStateExternalIpIpAddress:RegionPerInstanceConfigPreservedStateExternalIpIpAddress": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The URL of the reservation for this IP address.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionPerInstanceConfigPreservedStateInternalIp:RegionPerInstanceConfigPreservedStateInternalIp": {
            "properties": {
                "autoDelete": {
                    "type": "string",
                    "description": "These stateful IPs will never be released during autohealing, update or VM instance recreate operations. This flag is used to configure if the IP reservation should be deleted after it is no longer used by the group, e.g. when the given instance or the whole group is deleted.\nDefault value is `NEVER`.\nPossible values are: `NEVER`, `ON_PERMANENT_INSTANCE_DELETION`.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "ipAddress": {
                    "$ref": "#/types/gcp:compute/RegionPerInstanceConfigPreservedStateInternalIpIpAddress:RegionPerInstanceConfigPreservedStateInternalIpIpAddress",
                    "description": "Ip address representation\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "interfaceName"
            ]
        },
        "gcp:compute/RegionPerInstanceConfigPreservedStateInternalIpIpAddress:RegionPerInstanceConfigPreservedStateInternalIpIpAddress": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The URL of the reservation for this IP address.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionResizeRequestRequestedRunDuration:RegionResizeRequestRequestedRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 600 to 604800 inclusive. Note: minimum and maximum allowed range for requestedRunDuration is 10 minutes (600 seconds) and 7 days(604800 seconds) correspondingly.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionResizeRequestStatus:RegionResizeRequestStatus": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusError:RegionResizeRequestStatusError"
                    },
                    "description": "(Output)\nFatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.\nStructure is documented below.\n"
                },
                "lastAttempts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttempt:RegionResizeRequestStatusLastAttempt"
                    },
                    "description": "(Output)\nInformation about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the \"error\" field only.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors",
                        "lastAttempts"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusError:RegionResizeRequestStatusError": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusErrorError:RegionResizeRequestStatusErrorError"
                    },
                    "description": "(Output)\nThe array of errors encountered while processing this operation.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusErrorError:RegionResizeRequestStatusErrorError": {
            "properties": {
                "code": {
                    "type": "string",
                    "description": "(Output)\nThe error type identifier for this error.\n"
                },
                "errorDetails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetail:RegionResizeRequestStatusErrorErrorErrorDetail"
                    },
                    "description": "(Output)\nAn array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.\nStructure is documented below.\n"
                },
                "location": {
                    "type": "string",
                    "description": "(Output)\nIndicates the field in the request that caused the error. This property is optional.\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nThe localized error message in the above locale.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "code",
                        "errorDetails",
                        "location",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetail:RegionResizeRequestStatusErrorErrorErrorDetail": {
            "properties": {
                "errorInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailErrorInfo:RegionResizeRequestStatusErrorErrorErrorDetailErrorInfo"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "helps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailHelp:RegionResizeRequestStatusErrorErrorErrorDetailHelp"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "localizedMessages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailLocalizedMessage:RegionResizeRequestStatusErrorErrorErrorDetailLocalizedMessage"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "quotaInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailQuotaInfo:RegionResizeRequestStatusErrorErrorErrorDetailQuotaInfo"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errorInfos",
                        "helps",
                        "localizedMessages",
                        "quotaInfos"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailErrorInfo:RegionResizeRequestStatusErrorErrorErrorDetailErrorInfo": {
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "(Output)\nThe logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\".\n"
                },
                "metadatas": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nAdditional structured details about this error.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nThe reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "domain",
                        "metadatas",
                        "reason"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailHelp:RegionResizeRequestStatusErrorErrorErrorDetailHelp": {
            "properties": {
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailHelpLink:RegionResizeRequestStatusErrorErrorErrorDetailHelpLink"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "links"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailHelpLink:RegionResizeRequestStatusErrorErrorErrorDetailHelpLink": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of this resize-request.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe URL of the link.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "url"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailLocalizedMessage:RegionResizeRequestStatusErrorErrorErrorDetailLocalizedMessage": {
            "properties": {
                "locale": {
                    "type": "string",
                    "description": "(Output)\nThe locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\"\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nThe localized error message in the above locale.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "locale",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusErrorErrorErrorDetailQuotaInfo:RegionResizeRequestStatusErrorErrorErrorDetailQuotaInfo": {
            "properties": {
                "dimensions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe map holding related quota dimensions\n"
                },
                "futureLimit": {
                    "type": "integer",
                    "description": "(Output)\nFuture quota limit being rolled out. The limit's unit depends on the quota type or metric.\n"
                },
                "limit": {
                    "type": "integer",
                    "description": "(Output)\nCurrent effective quota limit. The limit's unit depends on the quota type or metric.\n"
                },
                "limitName": {
                    "type": "string",
                    "description": "(Output)\nThe name of the quota limit.\n"
                },
                "metricName": {
                    "type": "string",
                    "description": "(Output)\nThe Compute Engine quota metric name.\n"
                },
                "rolloutStatus": {
                    "type": "string",
                    "description": "(Output)\nRollout status of the future quota limit.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dimensions",
                        "futureLimit",
                        "limit",
                        "limitName",
                        "metricName",
                        "rolloutStatus"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttempt:RegionResizeRequestStatusLastAttempt": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttemptError:RegionResizeRequestStatusLastAttemptError"
                    },
                    "description": "(Output)\nFatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttemptError:RegionResizeRequestStatusLastAttemptError": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttemptErrorError:RegionResizeRequestStatusLastAttemptErrorError"
                    },
                    "description": "(Output)\nThe array of errors encountered while processing this operation.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttemptErrorError:RegionResizeRequestStatusLastAttemptErrorError": {
            "properties": {
                "code": {
                    "type": "string",
                    "description": "(Output)\nThe error type identifier for this error.\n"
                },
                "errorDetails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetail:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetail"
                    },
                    "description": "(Output)\nAn array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.\nStructure is documented below.\n"
                },
                "location": {
                    "type": "string",
                    "description": "(Output)\nIndicates the field in the request that caused the error. This property is optional.\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nThe localized error message in the above locale.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "code",
                        "errorDetails",
                        "location",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetail:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetail": {
            "properties": {
                "errorInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "helps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "localizedMessages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "quotaInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errorInfos",
                        "helps",
                        "localizedMessages",
                        "quotaInfos"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo": {
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "(Output)\nThe logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\".\n"
                },
                "metadatas": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nAdditional structured details about this error.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nThe reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "domain",
                        "metadatas",
                        "reason"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp": {
            "properties": {
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "links"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of this resize-request.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe URL of the link.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "url"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage": {
            "properties": {
                "locale": {
                    "type": "string",
                    "description": "(Output)\nThe locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\"\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nThe localized error message in the above locale.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "locale",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo:RegionResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo": {
            "properties": {
                "dimensions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe map holding related quota dimensions\n"
                },
                "futureLimit": {
                    "type": "integer",
                    "description": "(Output)\nFuture quota limit being rolled out. The limit's unit depends on the quota type or metric.\n"
                },
                "limit": {
                    "type": "integer",
                    "description": "(Output)\nCurrent effective quota limit. The limit's unit depends on the quota type or metric.\n"
                },
                "limitName": {
                    "type": "string",
                    "description": "(Output)\nThe name of the quota limit.\n"
                },
                "metricName": {
                    "type": "string",
                    "description": "(Output)\nThe Compute Engine quota metric name.\n"
                },
                "rolloutStatus": {
                    "type": "string",
                    "description": "(Output)\nRollout status of the future quota limit.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dimensions",
                        "futureLimit",
                        "limit",
                        "limitName",
                        "metricName",
                        "rolloutStatus"
                    ]
                }
            }
        },
        "gcp:compute/RegionSecurityPolicyAdvancedOptionsConfig:RegionSecurityPolicyAdvancedOptionsConfig": {
            "properties": {
                "jsonCustomConfig": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyAdvancedOptionsConfigJsonCustomConfig:RegionSecurityPolicyAdvancedOptionsConfigJsonCustomConfig",
                    "description": "Custom configuration to apply the JSON parsing. Only applicable when JSON parsing is set to STANDARD.\nStructure is documented below.\n"
                },
                "jsonParsing": {
                    "type": "string",
                    "description": "JSON body parsing. Supported values include: \"DISABLED\", \"STANDARD\", \"STANDARD_WITH_GRAPHQL\".\nPossible values are: `DISABLED`, `STANDARD`, `STANDARD_WITH_GRAPHQL`.\n"
                },
                "logLevel": {
                    "type": "string",
                    "description": "Logging level. Supported values include: \"NORMAL\", \"VERBOSE\".\nPossible values are: `NORMAL`, `VERBOSE`.\n"
                },
                "requestBodyInspectionSize": {
                    "type": "string",
                    "description": "(Optional, Beta)\nThe maximum request size chosen by the customer with Waf enabled. Values supported are \"8KB\", \"16KB, \"32KB\", \"48KB\" and \"64KB\".\nValues are case insensitive.\nPossible values are: `8KB`, `16KB`, `32KB`, `48KB`, `64KB`.\n"
                },
                "userIpRequestHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of case-insensitive request header names to use for resolving the callers client IP address.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyAdvancedOptionsConfigJsonCustomConfig:RegionSecurityPolicyAdvancedOptionsConfigJsonCustomConfig": {
            "properties": {
                "contentTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of custom Content-Type header values to apply the JSON parsing.\n"
                }
            },
            "type": "object",
            "required": [
                "contentTypes"
            ]
        },
        "gcp:compute/RegionSecurityPolicyDdosProtectionConfig:RegionSecurityPolicyDdosProtectionConfig": {
            "properties": {
                "ddosProtection": {
                    "type": "string",
                    "description": "Google Cloud Armor offers the following options to help protect systems against DDoS attacks:\n- STANDARD: basic always-on protection for network load balancers, protocol forwarding, or VMs with public IP addresses.\n- ADVANCED: additional protections for Managed Protection Plus subscribers who use network load balancers, protocol forwarding, or VMs with public IP addresses.\n- ADVANCED_PREVIEW: flag to enable the security policy in preview mode.\nPossible values are: `ADVANCED`, `ADVANCED_PREVIEW`, `STANDARD`.\n"
                }
            },
            "type": "object",
            "required": [
                "ddosProtection"
            ]
        },
        "gcp:compute/RegionSecurityPolicyRule:RegionSecurityPolicyRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "The Action to perform when the rule is matched. The following are the valid actions:\n* allow: allow access to target.\n* deny(STATUS): deny access to target, returns the HTTP response code specified. Valid values for STATUS are 403, 404, and 502.\n* rate_based_ban: limit client traffic to the configured threshold and ban the client if the traffic exceeds the threshold. Configure parameters for this action in RateLimitOptions. Requires rateLimitOptions to be set.\n* redirect: redirect to a different target. This can either be an internal reCAPTCHA redirect, or an external URL-based redirect via a 302 response. Parameters for this action can be configured via redirectOptions. This action is only supported in Global Security Policies of type CLOUD_ARMOR.\n* throttle: limit client traffic to the configured threshold. Configure parameters for this action in rateLimitOptions. Requires rateLimitOptions to be set for this.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource. Provide this property when you create the resource.\n"
                },
                "match": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleMatch:RegionSecurityPolicyRuleMatch",
                    "description": "A match condition that incoming traffic is evaluated against.\nIf it evaluates to true, the corresponding 'action' is enforced.\nStructure is documented below.\n"
                },
                "networkMatch": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleNetworkMatch:RegionSecurityPolicyRuleNetworkMatch",
                    "description": "A match condition that incoming packets are evaluated against for CLOUD_ARMOR_NETWORK security policies. If it matches, the corresponding 'action' is enforced.\nThe match criteria for a rule consists of built-in match fields (like 'srcIpRanges') and potentially multiple user-defined match fields ('userDefinedFields').\nField values may be extracted directly from the packet or derived from it (e.g. 'srcRegionCodes'). Some fields may not be present in every packet (e.g. 'srcPorts'). A user-defined field is only present if the base header is found in the packet and the entire field is in bounds.\nEach match field may specify which values can match it, listing one or more ranges, prefixes, or exact values that are considered a match for the field. A field value must be present in order to match a specified match field. If no match values are specified for a match field, then any field value is considered to match it, and it's not required to be present. For strings specifying '*' is also equivalent to match all.\nFor a packet to match a rule, all specified match fields must match the corresponding field values derived from the packet.\nExample:\nnetworkMatch: srcIpRanges: - \"192.0.2.0/24\" - \"198.51.100.0/24\" userDefinedFields: - name: \u003cspan pulumi-lang-nodejs=\"\"ipv4FragmentOffset\"\" pulumi-lang-dotnet=\"\"Ipv4FragmentOffset\"\" pulumi-lang-go=\"\"ipv4FragmentOffset\"\" pulumi-lang-python=\"\"ipv4_fragment_offset\"\" pulumi-lang-yaml=\"\"ipv4FragmentOffset\"\" pulumi-lang-java=\"\"ipv4FragmentOffset\"\" pulumi-lang-hcl=\"\"ipv4_fragment_offset\"\"\u003e\"ipv4FragmentOffset\"\u003c/span\u003e values: - \"1-0x1fff\"\nThe above match condition matches packets with a source IP in 192.0.2.0/24 or 198.51.100.0/24 and a user-defined field named \u003cspan pulumi-lang-nodejs=\"\"ipv4FragmentOffset\"\" pulumi-lang-dotnet=\"\"Ipv4FragmentOffset\"\" pulumi-lang-go=\"\"ipv4FragmentOffset\"\" pulumi-lang-python=\"\"ipv4_fragment_offset\"\" pulumi-lang-yaml=\"\"ipv4FragmentOffset\"\" pulumi-lang-java=\"\"ipv4FragmentOffset\"\" pulumi-lang-hcl=\"\"ipv4_fragment_offset\"\"\u003e\"ipv4FragmentOffset\"\u003c/span\u003e with a value between 1 and 0x1fff inclusive\nStructure is documented below.\n"
                },
                "preconfiguredWafConfig": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfig:RegionSecurityPolicyRulePreconfiguredWafConfig",
                    "description": "Preconfigured WAF configuration to be applied for the rule.\nIf the rule does not evaluate preconfigured WAF rules, i.e., if evaluatePreconfiguredWaf() is not used, this field will have no effect.\nStructure is documented below.\n"
                },
                "preview": {
                    "type": "boolean",
                    "description": "If set to true, the specified action is not enforced.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "An integer indicating the priority of a rule in the list.\nThe priority must be a positive value between 0 and 2147483647.\nRules are evaluated from highest to lowest priority where 0 is the highest priority and 2147483647 is the lowest priority.\n"
                },
                "rateLimitOptions": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleRateLimitOptions:RegionSecurityPolicyRuleRateLimitOptions",
                    "description": "Must be specified if the action is \u003cspan pulumi-lang-nodejs=\"\"rateBasedBan\"\" pulumi-lang-dotnet=\"\"RateBasedBan\"\" pulumi-lang-go=\"\"rateBasedBan\"\" pulumi-lang-python=\"\"rate_based_ban\"\" pulumi-lang-yaml=\"\"rateBasedBan\"\" pulumi-lang-java=\"\"rateBasedBan\"\" pulumi-lang-hcl=\"\"rate_based_ban\"\"\u003e\"rateBasedBan\"\u003c/span\u003e or \"throttle\". Cannot be specified for any other actions.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "priority"
            ]
        },
        "gcp:compute/RegionSecurityPolicyRuleMatch:RegionSecurityPolicyRuleMatch": {
            "properties": {
                "config": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleMatchConfig:RegionSecurityPolicyRuleMatchConfig",
                    "description": "The configuration options available when specifying versionedExpr.\nThis field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified.\nStructure is documented below.\n"
                },
                "expr": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleMatchExpr:RegionSecurityPolicyRuleMatchExpr",
                    "description": "User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.\nStructure is documented below.\n"
                },
                "versionedExpr": {
                    "type": "string",
                    "description": "Preconfigured versioned expression. If this field is specified, config must also be specified.\nAvailable preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config.\nPossible values are: `SRC_IPS_V1`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyRuleMatchConfig:RegionSecurityPolicyRuleMatchConfig": {
            "properties": {
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of srcIpRanges allowed is 10.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyRuleMatchExpr:RegionSecurityPolicyRuleMatchExpr": {
            "properties": {
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:compute/RegionSecurityPolicyRuleNetworkMatch:RegionSecurityPolicyRuleNetworkMatch": {
            "properties": {
                "destIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Destination IPv4/IPv6 addresses or CIDR prefixes, in standard text format.\n"
                },
                "destPorts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Destination port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. \"80\") or range (e.g. \"0-1023\").\n"
                },
                "ipProtocols": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "IPv4 protocol / IPv6 next header (after extension headers). Each element can be an 8-bit unsigned decimal number (e.g. \"6\"), range (e.g. \"253-254\"), or one of the following protocol names: \"tcp\", \"udp\", \"icmp\", \"esp\", \"ah\", \"ipip\", or \"sctp\".\n"
                },
                "srcAsns": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "BGP Autonomous System Number associated with the source IP address.\n"
                },
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source IPv4/IPv6 addresses or CIDR prefixes, in standard text format.\n"
                },
                "srcPorts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Source port numbers for TCP/UDP/SCTP. Each element can be a 16-bit unsigned decimal number (e.g. \"80\") or range (e.g. \"0-1023\").\n"
                },
                "srcRegionCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Two-letter ISO 3166-1 alpha-2 country code associated with the source IP address.\n"
                },
                "userDefinedFields": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleNetworkMatchUserDefinedField:RegionSecurityPolicyRuleNetworkMatchUserDefinedField"
                    },
                    "description": "User-defined fields. Each element names a defined field and lists the matching values for that field.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyRuleNetworkMatchUserDefinedField:RegionSecurityPolicyRuleNetworkMatchUserDefinedField": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the user-defined field, as given in the definition.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Matching values of the field. Each element can be a 32-bit unsigned decimal or hexadecimal (starting with \"0x\") number (e.g. \"64\") or range (e.g. \"0x400-0x7ff\").\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfig:RegionSecurityPolicyRulePreconfiguredWafConfig": {
            "properties": {
                "exclusions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusion:RegionSecurityPolicyRulePreconfiguredWafConfigExclusion"
                    },
                    "description": "An exclusion to apply during preconfigured WAF evaluation.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusion:RegionSecurityPolicyRulePreconfiguredWafConfigExclusion": {
            "properties": {
                "requestCookies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky:RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky"
                    },
                    "description": "Request cookie whose value will be excluded from inspection during preconfigured WAF evaluation.\nStructure is documented below.\n"
                },
                "requestHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader:RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader"
                    },
                    "description": "Request header whose value will be excluded from inspection during preconfigured WAF evaluation.\nStructure is documented below.\n"
                },
                "requestQueryParams": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam:RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam"
                    },
                    "description": "Request query parameter whose value will be excluded from inspection during preconfigured WAF evaluation.\nNote that the parameter can be in the query string or in the POST body.\nStructure is documented below.\n"
                },
                "requestUris": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri:RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri"
                    },
                    "description": "Request URI from the request line to be excluded from inspection during preconfigured WAF evaluation.\nWhen specifying this field, the query or fragment part should be excluded.\nStructure is documented below.\n"
                },
                "targetRuleIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion.\nIf omitted, it refers to all the rule IDs under the WAF rule set.\n"
                },
                "targetRuleSet": {
                    "type": "string",
                    "description": "Target WAF rule set to apply the preconfigured WAF exclusion.\n"
                }
            },
            "type": "object",
            "required": [
                "targetRuleSet"
            ]
        },
        "gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky:RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\nPossible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader:RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\nPossible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam:RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\nPossible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri:RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\nPossible values are: `CONTAINS`, `ENDS_WITH`, `EQUALS`, `EQUALS_ANY`, `STARTS_WITH`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/RegionSecurityPolicyRuleRateLimitOptions:RegionSecurityPolicyRuleRateLimitOptions": {
            "properties": {
                "banDurationSec": {
                    "type": "integer",
                    "description": "Can only be specified if the action for the rule is \u003cspan pulumi-lang-nodejs=\"\"rateBasedBan\"\" pulumi-lang-dotnet=\"\"RateBasedBan\"\" pulumi-lang-go=\"\"rateBasedBan\"\" pulumi-lang-python=\"\"rate_based_ban\"\" pulumi-lang-yaml=\"\"rateBasedBan\"\" pulumi-lang-java=\"\"rateBasedBan\"\" pulumi-lang-hcl=\"\"rate_based_ban\"\"\u003e\"rateBasedBan\"\u003c/span\u003e.\nIf specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold.\n"
                },
                "banThreshold": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleRateLimitOptionsBanThreshold:RegionSecurityPolicyRuleRateLimitOptionsBanThreshold",
                    "description": "Can only be specified if the action for the rule is \u003cspan pulumi-lang-nodejs=\"\"rateBasedBan\"\" pulumi-lang-dotnet=\"\"RateBasedBan\"\" pulumi-lang-go=\"\"rateBasedBan\"\" pulumi-lang-python=\"\"rate_based_ban\"\" pulumi-lang-yaml=\"\"rateBasedBan\"\" pulumi-lang-java=\"\"rateBasedBan\"\" pulumi-lang-hcl=\"\"rate_based_ban\"\"\u003e\"rateBasedBan\"\u003c/span\u003e.\nIf specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.\nStructure is documented below.\n"
                },
                "conformAction": {
                    "type": "string",
                    "description": "Action to take for requests that are under the configured rate limit threshold.\nValid option is \"allow\" only.\n"
                },
                "enforceOnKey": {
                    "type": "string",
                    "description": "Determines the key to enforce the rateLimitThreshold on. Possible values are:\n* ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKey\" is not configured.\n* IP: The source IP address of the request is the key. Each IP has this limit enforced separately.\n* HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.\n* XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.\n* HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.\n* HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.\n* SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.\n* REGION_CODE: The country/region from which the request originates.\n* TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.\n* TLS_JA4_FINGERPRINT: JA4 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.\n* USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP.\nPossible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `TLS_JA4_FINGERPRINT`, `USER_IP`.\n"
                },
                "enforceOnKeyConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig:RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig"
                    },
                    "description": "If specified, any combination of values of enforceOnKeyType/enforceOnKeyName is treated as the key on which ratelimit threshold/action is enforced.\nYou can specify up to 3 enforceOnKeyConfigs.\nIf enforceOnKeyConfigs is specified, enforceOnKey must not be specified.\nStructure is documented below.\n"
                },
                "enforceOnKeyName": {
                    "type": "string",
                    "description": "Rate limit key name applicable only for the following key types:\nHTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.\nHTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.\n"
                },
                "exceedAction": {
                    "type": "string",
                    "description": "Action to take for requests that are above the configured rate limit threshold, to deny with a specified HTTP response code.\nValid options are deny(STATUS), where valid values for STATUS are 403, 404, 429, and 502.\n"
                },
                "rateLimitThreshold": {
                    "$ref": "#/types/gcp:compute/RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold:RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold",
                    "description": "Threshold at which to begin ratelimiting.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyRuleRateLimitOptionsBanThreshold:RegionSecurityPolicyRuleRateLimitOptionsBanThreshold": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "Number of HTTP(S) requests for calculating the threshold.\n"
                },
                "intervalSec": {
                    "type": "integer",
                    "description": "Interval over which the threshold is computed.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig:RegionSecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig": {
            "properties": {
                "enforceOnKeyName": {
                    "type": "string",
                    "description": "Rate limit key name applicable only for the following key types:\nHTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.\nHTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.\n"
                },
                "enforceOnKeyType": {
                    "type": "string",
                    "description": "Determines the key to enforce the rateLimitThreshold on. Possible values are:\n* ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKeyConfigs\" is not configured.\n* IP: The source IP address of the request is the key. Each IP has this limit enforced separately.\n* HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.\n* XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.\n* HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.\n* HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.\n* SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.\n* REGION_CODE: The country/region from which the request originates.\n* TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.\n* TLS_JA4_FINGERPRINT: JA4 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.\n* USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP.\nPossible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `TLS_JA4_FINGERPRINT`, `USER_IP`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold:RegionSecurityPolicyRuleRateLimitOptionsRateLimitThreshold": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "Number of HTTP(S) requests for calculating the threshold.\n"
                },
                "intervalSec": {
                    "type": "integer",
                    "description": "Interval over which the threshold is computed.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionSecurityPolicyUserDefinedField:RegionSecurityPolicyUserDefinedField": {
            "properties": {
                "base": {
                    "type": "string",
                    "description": "The base relative to which 'offset' is measured. Possible values are:\n- IPV4: Points to the beginning of the IPv4 header.\n- IPV6: Points to the beginning of the IPv6 header.\n- TCP: Points to the beginning of the TCP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments.\n- UDP: Points to the beginning of the UDP header, skipping over any IPv4 options or IPv6 extension headers. Not present for non-first fragments.\nPossible values are: `IPV4`, `IPV6`, `TCP`, `UDP`.\n"
                },
                "mask": {
                    "type": "string",
                    "description": "If specified, apply this mask (bitwise AND) to the field to ignore bits before matching.\nEncoded as a hexadecimal number (starting with \"0x\").\nThe last byte of the field (in network byte order) corresponds to the least significant byte of the mask.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the user-defined field, as given in the definition.\n"
                },
                "offset": {
                    "type": "integer",
                    "description": "Offset of the first byte of the field (in network byte order) relative to 'base'.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "Size of the field in bytes. Valid values: 1-4.\n"
                }
            },
            "type": "object",
            "required": [
                "base"
            ]
        },
        "gcp:compute/RegionUrlMapDefaultRouteAction:RegionUrlMapDefaultRouteAction": {
            "properties": {
                "corsPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionCorsPolicy:RegionUrlMapDefaultRouteActionCorsPolicy",
                    "description": "The specification for allowing client side cross-origin requests. Please see\n[W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)\nStructure is documented below.\n"
                },
                "faultInjectionPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionFaultInjectionPolicy:RegionUrlMapDefaultRouteActionFaultInjectionPolicy",
                    "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure.\nAs part of fault injection, when clients send requests to a backend service, delays can be introduced by a load balancer on a percentage of requests before sending those requests to the backend service.\nSimilarly requests from clients can be aborted by the load balancer for a percentage of requests.\ntimeout and retryPolicy is ignored by clients that are configured with a faultInjectionPolicy if: 1. The traffic is generated by fault injection AND 2. The fault injection is not a delay fault injection.\nFault injection is not supported with the global external HTTP(S) load balancer (classic). To see which load balancers support fault injection, see Load balancing: [Routing and traffic management features](https://cloud.google.com/load-balancing/docs/features#routing-traffic-management).\nStructure is documented below.\n"
                },
                "requestMirrorPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionRequestMirrorPolicy:RegionUrlMapDefaultRouteActionRequestMirrorPolicy",
                    "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service.\nThe load balancer does not wait for responses from the shadow service. Before sending traffic to the shadow service, the host / authority header is suffixed with -shadow.\nNot supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "retryPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionRetryPolicy:RegionUrlMapDefaultRouteActionRetryPolicy",
                    "description": "Specifies the retry policy associated with this route.\nStructure is documented below.\n"
                },
                "timeout": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionTimeout:RegionUrlMapDefaultRouteActionTimeout",
                    "description": "Specifies the timeout for the selected route. Timeout is computed from the time the request has been fully processed (known as end-of-stream) up until the response has been processed. Timeout includes all retries.\nIf not specified, this field uses the largest timeout among all backend services associated with the route.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "urlRewrite": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionUrlRewrite:RegionUrlMapDefaultRouteActionUrlRewrite",
                    "description": "The spec to modify the URL of the request, before forwarding the request to the matched service.\nurlRewrite is the only action supported in UrlMaps for external HTTP(S) load balancers.\nNot supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "weightedBackendServices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionWeightedBackendService:RegionUrlMapDefaultRouteActionWeightedBackendService"
                    },
                    "description": "A list of weighted backend services to send traffic to when a route match occurs. The weights determine the fraction of traffic that flows to their corresponding backend service. If all traffic needs to go to a single backend service, there must be one weightedBackendService with weight set to a non-zero number.\nAfter a backend service is identified and before forwarding the request to the backend service, advanced routing actions such as URL rewrites and header transformations are applied depending on additional settings specified in this HttpRouteAction.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionCorsPolicy:RegionUrlMapDefaultRouteActionCorsPolicy": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials. This field translates to the Access-Control-Allow-Credentials header.\nDefault is false.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Methods header.\n"
                },
                "allowOriginRegexes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the regualar expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "allowOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "If true, the setting specifies the CORS policy is disabled. The default value of false, which indicates that the CORS policy is in effect.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "integer",
                    "description": "Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionFaultInjectionPolicy:RegionUrlMapDefaultRouteActionFaultInjectionPolicy": {
            "properties": {
                "abort": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbort:RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbort",
                    "description": "The specification for how client requests are aborted as part of fault injection.\nStructure is documented below.\n"
                },
                "delay": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelay:RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelay",
                    "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbort:RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbort": {
            "properties": {
                "httpStatus": {
                    "type": "integer",
                    "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelay:RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelay": {
            "properties": {
                "fixedDelay": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelay:RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelay",
                    "description": "Specifies the value of the fixed delay interval.\nStructure is documented below.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelay:RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelay": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionRequestMirrorPolicy:RegionUrlMapDefaultRouteActionRequestMirrorPolicy": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the RegionBackendService resource being mirrored to.\nThe backend service configured for a mirroring policy must reference backends that are of the same type as the original backend service matched in the URL map.\nServerless NEG backends are not currently supported as a mirrored backend service.\n"
                },
                "mirrorPercent": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe percentage of requests to be mirrored to backendService.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionRetryPolicy:RegionUrlMapDefaultRouteActionRetryPolicy": {
            "properties": {
                "numRetries": {
                    "type": "integer",
                    "description": "Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.\n"
                },
                "perTryTimeout": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeout:RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeout",
                    "description": "Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "retryConditions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies one or more conditions when this retry policy applies.\nValid values are listed below. Only the following codes are supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true: cancelled, deadline-exceeded, internal, resource-exhausted, unavailable.\n- 5xx : retry is attempted if the instance or endpoint responds with any 5xx response code, or if the instance or endpoint does not respond at all. For example, disconnects, reset, read timeout, connection failure, and refused streams.\n- gateway-error : Similar to 5xx, but only applies to response codes 502, 503 or 504.\n- connect-failure : a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts.\n- retriable-4xx : a retry is attempted if the instance or endpoint responds with a 4xx response code. The only error that you can retry is error code 409.\n- refused-stream : a retry is attempted if the instance or endpoint resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry.\n- cancelled : a retry is attempted if the gRPC status code in the response header is set to cancelled.\n- deadline-exceeded : a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded.\n- internal :  a retry is attempted if the gRPC status code in the response header is set to internal.\n- resource-exhausted : a retry is attempted if the gRPC status code in the response header is set to resource-exhausted.\n- unavailable : a retry is attempted if the gRPC status code in the response header is set to unavailable.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeout:RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionTimeout:RegionUrlMapDefaultRouteActionTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionUrlRewrite:RegionUrlMapDefaultRouteActionUrlRewrite": {
            "properties": {
                "hostRewrite": {
                    "type": "string",
                    "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite.\nThe value must be from 1 to 255 characters.\n"
                },
                "pathPrefixRewrite": {
                    "type": "string",
                    "description": "Before forwarding the request to the selected backend service, the matching portion of the request's path is replaced by pathPrefixRewrite.\nThe value must be from 1 to 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionWeightedBackendService:RegionUrlMapDefaultRouteActionWeightedBackendService": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the default BackendService resource. Before forwarding the request to backendService, the load balancer applies any relevant headerActions specified as part of this backendServiceWeight.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderAction:RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.\nheaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request has been directed to a backend service, subsequent requests are sent to the same backend service as determined by the backend service's session affinity policy.\nThe value must be from 0 to 1000.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderAction:RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request before forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request before forwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response before sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response before sending the response back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapDefaultUrlRedirect:RegionUrlMapDefaultUrlRedirect": {
            "properties": {
                "hostRedirect": {
                    "type": "string",
                    "description": "The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.\n"
                },
                "httpsRedirect": {
                    "type": "boolean",
                    "description": "If set to true, the URL scheme in the redirected request is set to https. If set to\nfalse, the URL scheme of the redirected request will remain the same as that of the\nrequest. This must only be set for UrlMaps used in TargetHttpProxys. Setting this\ntrue for TargetHttpsProxy is not permitted. The default is set to false.\n"
                },
                "pathRedirect": {
                    "type": "string",
                    "description": "The path that will be used in the redirect response instead of the one that was\nsupplied in the request. pathRedirect cannot be supplied together with\nprefixRedirect. Supply one alone or neither. If neither is supplied, the path of the\noriginal request will be used for the redirect. The value must be between 1 and 1024\ncharacters.\n"
                },
                "prefixRedirect": {
                    "type": "string",
                    "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\nprefixRedirect cannot be supplied together with pathRedirect. Supply one alone or\nneither. If neither is supplied, the path of the original request will be used for\nthe redirect. The value must be between 1 and 1024 characters.\n"
                },
                "redirectResponseCode": {
                    "type": "string",
                    "description": "The HTTP Status code to use for this RedirectAction. Supported values are:\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n* FOUND, which corresponds to 302.\n* SEE_OTHER which corresponds to 303.\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained.\n"
                },
                "stripQuery": {
                    "type": "boolean",
                    "description": "If set to true, any accompanying query portion of the original URL is removed prior\nto redirecting the request. If set to false, the query portion of the original URL is\nretained.\nThis field is required to ensure an empty block is not set. The normal default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "stripQuery"
            ]
        },
        "gcp:compute/RegionUrlMapHeaderAction:RegionUrlMapHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapHeaderActionRequestHeadersToAdd:RegionUrlMapHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request before forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request before forwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapHeaderActionResponseHeadersToAdd:RegionUrlMapHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response before sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response before sending the response back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapHeaderActionRequestHeadersToAdd:RegionUrlMapHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapHeaderActionResponseHeadersToAdd:RegionUrlMapHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapHostRule:RegionUrlMapHostRule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of this HostRule. Provide this property\nwhen you create the resource.\n"
                },
                "hosts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of host patterns to match. They must be valid\nhostnames, except * will match any string of ([a-z0-9-.]*). In\nthat case, * must be the first character and must be followed in\nthe pattern by either - or ..\n"
                },
                "pathMatcher": {
                    "type": "string",
                    "description": "The name of the PathMatcher to use to match the path portion of\nthe URL if the hostRule matches the URL's host portion.\n"
                }
            },
            "type": "object",
            "required": [
                "hosts",
                "pathMatcher"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcher:RegionUrlMapPathMatcher": {
            "properties": {
                "defaultRouteAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteAction:RegionUrlMapPathMatcherDefaultRouteAction",
                    "description": "defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs\nadvanced routing actions like URL rewrites, header transformations, etc. prior to forwarding the request\nto the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set.\nConversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices.\nOnly one of defaultRouteAction or defaultUrlRedirect must be set.\nStructure is documented below.\n"
                },
                "defaultService": {
                    "type": "string",
                    "description": "A reference to a RegionBackendService resource. This will be used if\nnone of the pathRules defined by this PathMatcher is matched by\nthe URL's path portion.\n"
                },
                "defaultUrlRedirect": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultUrlRedirect:RegionUrlMapPathMatcherDefaultUrlRedirect",
                    "description": "When none of the specified hostRules match, the request is redirected to a URL specified\nby defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or\ndefaultRouteAction must not be set.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherHeaderAction:RegionUrlMapPathMatcherHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.\nheaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name to which this PathMatcher is referred by the HostRule.\n"
                },
                "pathRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRule:RegionUrlMapPathMatcherPathRule"
                    },
                    "description": "The list of path rules. Use this list instead of routeRules when routing based\non simple path matching is all that's required. The order by which path rules\nare specified does not matter. Matches are always done on the longest-path-first\nbasis. For example: a pathRule with a path /a/b/c/* will match before /a/b/*\nirrespective of the order in which those paths appear in this list. Within a\ngiven pathMatcher, only one of pathRules or routeRules must be set.\nStructure is documented below.\n"
                },
                "routeRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRule:RegionUrlMapPathMatcherRouteRule"
                    },
                    "description": "The list of ordered HTTP route rules. Use this list instead of pathRules when\nadvanced route matching and routing actions are desired. The order of specifying\nrouteRules matters: the first rule that matches will cause its specified routing\naction to take effect. Within a given pathMatcher, only one of pathRules or\nrouteRules must be set. routeRules are not supported in UrlMaps intended for\nExternal load balancers.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteAction:RegionUrlMapPathMatcherDefaultRouteAction": {
            "properties": {
                "corsPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionCorsPolicy:RegionUrlMapPathMatcherDefaultRouteActionCorsPolicy",
                    "description": "The specification for allowing client side cross-origin requests. Please see\n[W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)\nStructure is documented below.\n"
                },
                "faultInjectionPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicy:RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicy",
                    "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure.\nAs part of fault injection, when clients send requests to a backend service, delays can be introduced by a load balancer on a percentage of requests before sending those requests to the backend service.\nSimilarly requests from clients can be aborted by the load balancer for a percentage of requests.\ntimeout and retryPolicy is ignored by clients that are configured with a faultInjectionPolicy if: 1. The traffic is generated by fault injection AND 2. The fault injection is not a delay fault injection.\nFault injection is not supported with the global external HTTP(S) load balancer (classic). To see which load balancers support fault injection, see Load balancing: [Routing and traffic management features](https://cloud.google.com/load-balancing/docs/features#routing-traffic-management).\nStructure is documented below.\n"
                },
                "maxStreamDuration": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionMaxStreamDuration:RegionUrlMapPathMatcherDefaultRouteActionMaxStreamDuration",
                    "description": "Specifies the maximum duration (timeout) for streams on the selected route.\nUnlike the `Timeout` field where the timeout duration starts from the time the request\nhas been fully processed (known as end-of-stream), the duration in this field\nis computed from the beginning of the stream until the response has been processed,\nincluding all retries. A stream that does not complete in this duration is closed.\nStructure is documented below.\n"
                },
                "requestMirrorPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionRequestMirrorPolicy:RegionUrlMapPathMatcherDefaultRouteActionRequestMirrorPolicy",
                    "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service.\nThe load balancer does not wait for responses from the shadow service. Before sending traffic to the shadow service, the host / authority header is suffixed with -shadow.\nNot supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "retryPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionRetryPolicy:RegionUrlMapPathMatcherDefaultRouteActionRetryPolicy",
                    "description": "Specifies the retry policy associated with this route.\nStructure is documented below.\n"
                },
                "timeout": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionTimeout:RegionUrlMapPathMatcherDefaultRouteActionTimeout",
                    "description": "Specifies the timeout for the selected route. Timeout is computed from the time the request has been fully processed (known as end-of-stream) up until the response has been processed. Timeout includes all retries.\nIf not specified, this field uses the largest timeout among all backend services associated with the route.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "urlRewrite": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionUrlRewrite:RegionUrlMapPathMatcherDefaultRouteActionUrlRewrite",
                    "description": "The spec to modify the URL of the request, before forwarding the request to the matched service.\nurlRewrite is the only action supported in UrlMaps for external HTTP(S) load balancers.\nNot supported when the URL map is bound to a target gRPC proxy that has the validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "weightedBackendServices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendService:RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendService"
                    },
                    "description": "A list of weighted backend services to send traffic to when a route match occurs. The weights determine the fraction of traffic that flows to their corresponding backend service. If all traffic needs to go to a single backend service, there must be one weightedBackendService with weight set to a non-zero number.\nAfter a backend service is identified and before forwarding the request to the backend service, advanced routing actions such as URL rewrites and header transformations are applied depending on additional settings specified in this HttpRouteAction.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxStreamDuration",
                        "timeout"
                    ]
                }
            }
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionCorsPolicy:RegionUrlMapPathMatcherDefaultRouteActionCorsPolicy": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials. This field translates to the Access-Control-Allow-Credentials header.\nDefault is false.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Methods header.\n"
                },
                "allowOriginRegexes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the regualar expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "allowOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "If true, the setting specifies the CORS policy is disabled. The default value of false, which indicates that the CORS policy is in effect.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "integer",
                    "description": "Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicy:RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicy": {
            "properties": {
                "abort": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyAbort:RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyAbort",
                    "description": "The specification for how client requests are aborted as part of fault injection.\nStructure is documented below.\n"
                },
                "delay": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelay:RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelay",
                    "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyAbort:RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyAbort": {
            "properties": {
                "httpStatus": {
                    "type": "integer",
                    "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelay:RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelay": {
            "properties": {
                "fixedDelay": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelayFixedDelay:RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelayFixedDelay",
                    "description": "Specifies the value of the fixed delay interval.\nStructure is documented below.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelayFixedDelay:RegionUrlMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelayFixedDelay": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionMaxStreamDuration:RegionUrlMapPathMatcherDefaultRouteActionMaxStreamDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionRequestMirrorPolicy:RegionUrlMapPathMatcherDefaultRouteActionRequestMirrorPolicy": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the RegionBackendService resource being mirrored to.\nThe backend service configured for a mirroring policy must reference backends that are of the same type as the original backend service matched in the URL map.\nServerless NEG backends are not currently supported as a mirrored backend service.\n"
                },
                "mirrorPercent": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe percentage of requests to be mirrored to backendService.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionRetryPolicy:RegionUrlMapPathMatcherDefaultRouteActionRetryPolicy": {
            "properties": {
                "numRetries": {
                    "type": "integer",
                    "description": "Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.\n"
                },
                "perTryTimeout": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionRetryPolicyPerTryTimeout:RegionUrlMapPathMatcherDefaultRouteActionRetryPolicyPerTryTimeout",
                    "description": "Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "retryConditions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies one or more conditions when this retry policy applies.\nValid values are listed below. Only the following codes are supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true: cancelled, deadline-exceeded, internal, resource-exhausted, unavailable.\n- 5xx : retry is attempted if the instance or endpoint responds with any 5xx response code, or if the instance or endpoint does not respond at all. For example, disconnects, reset, read timeout, connection failure, and refused streams.\n- gateway-error : Similar to 5xx, but only applies to response codes 502, 503 or 504.\n- connect-failure : a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts.\n- retriable-4xx : a retry is attempted if the instance or endpoint responds with a 4xx response code. The only error that you can retry is error code 409.\n- refused-stream : a retry is attempted if the instance or endpoint resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry.\n- cancelled : a retry is attempted if the gRPC status code in the response header is set to cancelled.\n- deadline-exceeded : a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded.\n- internal :  a retry is attempted if the gRPC status code in the response header is set to internal.\n- resource-exhausted : a retry is attempted if the gRPC status code in the response header is set to resource-exhausted.\n- unavailable : a retry is attempted if the gRPC status code in the response header is set to unavailable.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionRetryPolicyPerTryTimeout:RegionUrlMapPathMatcherDefaultRouteActionRetryPolicyPerTryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionTimeout:RegionUrlMapPathMatcherDefaultRouteActionTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionUrlRewrite:RegionUrlMapPathMatcherDefaultRouteActionUrlRewrite": {
            "properties": {
                "hostRewrite": {
                    "type": "string",
                    "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite.\nThe value must be from 1 to 255 characters.\n"
                },
                "pathPrefixRewrite": {
                    "type": "string",
                    "description": "Before forwarding the request to the selected backend service, the matching portion of the request's path is replaced by pathPrefixRewrite.\nThe value must be from 1 to 1024 characters.\n"
                },
                "pathTemplateRewrite": {
                    "type": "string",
                    "description": "If specified, the pattern rewrites the URL path (based on the :path header) using the HTTP template syntax.\nA corresponding pathTemplateMatch must be specified. Any template variables must exist in the pathTemplateMatch field.\n* At least one variable must be specified in the pathTemplateMatch field\n* You can omit variables from the rewritten URL\n* The * and ** operators cannot be matched unless they have a corresponding variable name - e.g. {format=*} or {var=**}.\nFor example, a pathTemplateMatch of /static/{format=**} could be rewritten as /static/content/{format} to prefix\n/content to the URL. Variables can also be re-ordered in a rewrite, so that /{country}/{format}/{suffix=**} can be\nrewritten as /content/{format}/{country}/{suffix}.\nAt least one non-empty routeRules[].matchRules[].path_template_match is required.\nOnly one of pathPrefixRewrite or pathTemplateRewrite may be specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendService:RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendService": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the default BackendService resource. Before forwarding the request to backendService, the load balancer applies any relevant headerActions specified as part of this backendServiceWeight.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderAction:RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.\nheaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request has been directed to a backend service, subsequent requests are sent to the same backend service as determined by the backend service's session affinity policy.\nThe value must be from 0 to 1000.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderAction:RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request before forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request before forwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response before sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response before sending the response back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherDefaultUrlRedirect:RegionUrlMapPathMatcherDefaultUrlRedirect": {
            "properties": {
                "hostRedirect": {
                    "type": "string",
                    "description": "The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.\n"
                },
                "httpsRedirect": {
                    "type": "boolean",
                    "description": "If set to true, the URL scheme in the redirected request is set to https. If set to\nfalse, the URL scheme of the redirected request will remain the same as that of the\nrequest. This must only be set for UrlMaps used in TargetHttpProxys. Setting this\ntrue for TargetHttpsProxy is not permitted. The default is set to false.\n"
                },
                "pathRedirect": {
                    "type": "string",
                    "description": "The path that will be used in the redirect response instead of the one that was\nsupplied in the request. pathRedirect cannot be supplied together with\nprefixRedirect. Supply one alone or neither. If neither is supplied, the path of the\noriginal request will be used for the redirect. The value must be between 1 and 1024\ncharacters.\n"
                },
                "prefixRedirect": {
                    "type": "string",
                    "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\nprefixRedirect cannot be supplied together with pathRedirect. Supply one alone or\nneither. If neither is supplied, the path of the original request will be used for\nthe redirect. The value must be between 1 and 1024 characters.\n"
                },
                "redirectResponseCode": {
                    "type": "string",
                    "description": "The HTTP Status code to use for this RedirectAction. Supported values are:\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n* FOUND, which corresponds to 302.\n* SEE_OTHER which corresponds to 303.\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained.\n"
                },
                "stripQuery": {
                    "type": "boolean",
                    "description": "If set to true, any accompanying query portion of the original URL is removed prior\nto redirecting the request. If set to false, the query portion of the original URL is\nretained.\nThis field is required to ensure an empty block is not set. The normal default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "stripQuery"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherHeaderAction:RegionUrlMapPathMatcherHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request before forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request before forwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response before sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response before sending the response back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRule:RegionUrlMapPathMatcherPathRule": {
            "properties": {
                "paths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of path patterns to match. Each must start with / and the only place a\n\\* is allowed is at the end following a /. The string fed to the path matcher\ndoes not include any text after the first ? or #, and those chars are not\nallowed here.\n"
                },
                "routeAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteAction:RegionUrlMapPathMatcherPathRuleRouteAction",
                    "description": "In response to a matching path, the load balancer performs advanced routing\nactions like URL rewrites, header transformations, etc. prior to forwarding the\nrequest to the selected backend. If routeAction specifies any\nweightedBackendServices, service must not be set. Conversely if service is set,\nrouteAction cannot contain any  weightedBackendServices. Only one of routeAction\nor urlRedirect must be set.\nStructure is documented below.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The region backend service resource to which traffic is\ndirected if this rule is matched. If routeAction is additionally specified,\nadvanced routing actions like URL Rewrites, etc. take effect prior to sending\nthe request to the backend. However, if service is specified, routeAction cannot\ncontain any weightedBackendService s. Conversely, if routeAction specifies any\nweightedBackendServices, service must not be specified. Only one of urlRedirect,\nservice or routeAction.weightedBackendService must be set.\n"
                },
                "urlRedirect": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleUrlRedirect:RegionUrlMapPathMatcherPathRuleUrlRedirect",
                    "description": "When a path pattern is matched, the request is redirected to a URL specified\nby urlRedirect. If urlRedirect is specified, service or routeAction must not\nbe set.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "paths"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteAction:RegionUrlMapPathMatcherPathRuleRouteAction": {
            "properties": {
                "corsPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicy:RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicy",
                    "description": "The specification for allowing client side cross-origin requests. Please see W3C\nRecommendation for Cross Origin Resource Sharing\nStructure is documented below.\n"
                },
                "faultInjectionPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicy:RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicy",
                    "description": "The specification for fault injection introduced into traffic to test the\nresiliency of clients to backend service failure. As part of fault injection,\nwhen clients send requests to a backend service, delays can be introduced by\nLoadbalancer on a percentage of requests before sending those request to the\nbackend service. Similarly requests from clients can be aborted by the\nLoadbalancer for a percentage of requests. timeout and\u003cspan pulumi-lang-nodejs=\" retryPolicy \" pulumi-lang-dotnet=\" RetryPolicy \" pulumi-lang-go=\" retryPolicy \" pulumi-lang-python=\" retry_policy \" pulumi-lang-yaml=\" retryPolicy \" pulumi-lang-java=\" retryPolicy \" pulumi-lang-hcl=\" retry_policy \"\u003e retryPolicy \u003c/span\u003ewill be\nignored by clients that are configured with a fault_injection_policy.\nStructure is documented below.\n"
                },
                "requestMirrorPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicy:RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicy",
                    "description": "Specifies the policy on how requests intended for the route's backends are\nshadowed to a separate mirrored backend service. Loadbalancer does not wait for\nresponses from the shadow service. Prior to sending traffic to the shadow\nservice, the host / authority header is suffixed with -shadow.\nStructure is documented below.\n"
                },
                "retryPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicy:RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicy",
                    "description": "Specifies the retry policy associated with this route.\nStructure is documented below.\n"
                },
                "timeout": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionTimeout:RegionUrlMapPathMatcherPathRuleRouteActionTimeout",
                    "description": "Specifies the timeout for the selected route. Timeout is computed from the time\nthe request is has been fully processed (i.e. end-of-stream) up until the\nresponse has been completely processed. Timeout includes all retries. If not\nspecified, the default value is 15 seconds.\nStructure is documented below.\n"
                },
                "urlRewrite": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionUrlRewrite:RegionUrlMapPathMatcherPathRuleRouteActionUrlRewrite",
                    "description": "The spec to modify the URL of the request, prior to forwarding the request to\nthe matched service\nStructure is documented below.\n"
                },
                "weightedBackendServices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendService:RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendService"
                    },
                    "description": "A list of weighted backend services to send traffic to when a route match\noccurs. The weights determine the fraction of traffic that flows to their\ncorresponding backend service. If all traffic needs to go to a single backend\nservice, there must be one  weightedBackendService with weight set to a non 0\nnumber. Once a backendService is identified and before forwarding the request to\nthe backend service, advanced routing actions like Url rewrites and header\ntransformations are applied depending on additional settings specified in this\nHttpRouteAction.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicy:RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicy": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials. This field translates to the Access-Control-Allow-Credentials header.\nDefault is false.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Methods header.\n"
                },
                "allowOriginRegexes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the regualar expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "allowOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "If true, the setting specifies the CORS policy is disabled. The default value of false, which indicates that the CORS policy is in effect.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "integer",
                    "description": "Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.\n"
                }
            },
            "type": "object",
            "required": [
                "disabled"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicy:RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicy": {
            "properties": {
                "abort": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbort:RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbort",
                    "description": "The specification for how client requests are aborted as part of fault injection.\nStructure is documented below.\n"
                },
                "delay": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelay:RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelay",
                    "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbort:RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbort": {
            "properties": {
                "httpStatus": {
                    "type": "integer",
                    "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "httpStatus",
                "percentage"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelay:RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelay": {
            "properties": {
                "fixedDelay": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelay:RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelay",
                    "description": "Specifies the value of the fixed delay interval.\nStructure is documented below.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "fixedDelay",
                "percentage"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelay:RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelay": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicy:RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicy": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the RegionBackendService resource being mirrored to.\nThe backend service configured for a mirroring policy must reference backends that are of the same type as the original backend service matched in the URL map.\nServerless NEG backends are not currently supported as a mirrored backend service.\n"
                },
                "mirrorPercent": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe percentage of requests to be mirrored to backendService.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicy:RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicy": {
            "properties": {
                "numRetries": {
                    "type": "integer",
                    "description": "Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.\n"
                },
                "perTryTimeout": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeout:RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeout",
                    "description": "Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "retryConditions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies one or more conditions when this retry policy applies.\nValid values are listed below. Only the following codes are supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true: cancelled, deadline-exceeded, internal, resource-exhausted, unavailable.\n- 5xx : retry is attempted if the instance or endpoint responds with any 5xx response code, or if the instance or endpoint does not respond at all. For example, disconnects, reset, read timeout, connection failure, and refused streams.\n- gateway-error : Similar to 5xx, but only applies to response codes 502, 503 or 504.\n- connect-failure : a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts.\n- retriable-4xx : a retry is attempted if the instance or endpoint responds with a 4xx response code. The only error that you can retry is error code 409.\n- refused-stream : a retry is attempted if the instance or endpoint resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry.\n- cancelled : a retry is attempted if the gRPC status code in the response header is set to cancelled.\n- deadline-exceeded : a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded.\n- internal :  a retry is attempted if the gRPC status code in the response header is set to internal.\n- resource-exhausted : a retry is attempted if the gRPC status code in the response header is set to resource-exhausted.\n- unavailable : a retry is attempted if the gRPC status code in the response header is set to unavailable.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeout:RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionTimeout:RegionUrlMapPathMatcherPathRuleRouteActionTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionUrlRewrite:RegionUrlMapPathMatcherPathRuleRouteActionUrlRewrite": {
            "properties": {
                "hostRewrite": {
                    "type": "string",
                    "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite.\nThe value must be from 1 to 255 characters.\n"
                },
                "pathPrefixRewrite": {
                    "type": "string",
                    "description": "Before forwarding the request to the selected backend service, the matching portion of the request's path is replaced by pathPrefixRewrite.\nThe value must be from 1 to 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendService:RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendService": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the default BackendService resource. Before forwarding the request to backendService, the load balancer applies any relevant headerActions specified as part of this backendServiceWeight.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderAction:RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.\nheaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request has been directed to a backend service, subsequent requests are sent to the same backend service as determined by the backend service's session affinity policy.\nThe value must be from 0 to 1000.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService",
                "weight"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderAction:RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request before forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request before forwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response before sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response before sending the response back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherPathRuleUrlRedirect:RegionUrlMapPathMatcherPathRuleUrlRedirect": {
            "properties": {
                "hostRedirect": {
                    "type": "string",
                    "description": "The host that will be used in the redirect response instead of the one\nthat was supplied in the request. The value must be between 1 and 255\ncharacters.\n"
                },
                "httpsRedirect": {
                    "type": "boolean",
                    "description": "If set to true, the URL scheme in the redirected request is set to https.\nIf set to false, the URL scheme of the redirected request will remain the\nsame as that of the request. This must only be set for UrlMaps used in\nTargetHttpProxys. Setting this true for TargetHttpsProxy is not\npermitted. The default is set to false.\n"
                },
                "pathRedirect": {
                    "type": "string",
                    "description": "The path that will be used in the redirect response instead of the one\nthat was supplied in the request. pathRedirect cannot be supplied\ntogether with prefixRedirect. Supply one alone or neither. If neither is\nsupplied, the path of the original request will be used for the redirect.\nThe value must be between 1 and 1024 characters.\n"
                },
                "prefixRedirect": {
                    "type": "string",
                    "description": "The prefix that replaces the prefixMatch specified in the\nHttpRouteRuleMatch, retaining the remaining portion of the URL before\nredirecting the request. prefixRedirect cannot be supplied together with\npathRedirect. Supply one alone or neither. If neither is supplied, the\npath of the original request will be used for the redirect. The value\nmust be between 1 and 1024 characters.\n"
                },
                "redirectResponseCode": {
                    "type": "string",
                    "description": "The HTTP Status code to use for this RedirectAction. Supported values are:\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n* FOUND, which corresponds to 302.\n* SEE_OTHER which corresponds to 303.\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained.\n"
                },
                "stripQuery": {
                    "type": "boolean",
                    "description": "If set to true, any accompanying query portion of the original URL is removed\nprior to redirecting the request. If set to false, the query portion of the\noriginal URL is retained.\nThis field is required to ensure an empty block is not set. The normal default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "stripQuery"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRule:RegionUrlMapPathMatcherRouteRule": {
            "properties": {
                "headerAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleHeaderAction:RegionUrlMapPathMatcherRouteRuleHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for\nthe selected backendService. The headerAction specified here are applied before\nthe matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r\nouteAction.weightedBackendService.backendServiceWeightAction[].headerAction\nStructure is documented below.\n"
                },
                "matchRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRule:RegionUrlMapPathMatcherRouteRuleMatchRule"
                    },
                    "description": "The rules for determining a match.\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "For routeRules within a given pathMatcher, priority determines the order\nin which load balancer will interpret routeRules. RouteRules are evaluated\nin order of priority, from the lowest to highest number. The priority of\na rule decreases as its number increases (1, 2, 3, N+1). The first rule\nthat matches the request is applied.\nYou cannot configure two or more routeRules with the same priority.\nPriority for each rule must be set to a number between 0 and\n2147483647 inclusive.\nPriority numbers can have gaps, which enable you to add or remove rules\nin the future without affecting the rest of the rules. For example,\n1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which\nyou could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the\nfuture without any impact on existing rules.\n"
                },
                "routeAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteAction:RegionUrlMapPathMatcherRouteRuleRouteAction",
                    "description": "In response to a matching matchRule, the load balancer performs advanced routing\nactions like URL rewrites, header transformations, etc. prior to forwarding the\nrequest to the selected backend. If  routeAction specifies any\nweightedBackendServices, service must not be set. Conversely if service is set,\nrouteAction cannot contain any  weightedBackendServices. Only one of routeAction\nor urlRedirect must be set.\nStructure is documented below.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The region backend service resource to which traffic is\ndirected if this rule is matched. If routeAction is additionally specified,\nadvanced routing actions like URL Rewrites, etc. take effect prior to sending\nthe request to the backend. However, if service is specified, routeAction cannot\ncontain any weightedBackendService s. Conversely, if routeAction specifies any\nweightedBackendServices, service must not be specified. Only one of urlRedirect,\nservice or routeAction.weightedBackendService must be set.\n"
                },
                "urlRedirect": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleUrlRedirect:RegionUrlMapPathMatcherRouteRuleUrlRedirect",
                    "description": "When this rule is matched, the request is redirected to a URL specified by\nurlRedirect. If urlRedirect is specified, service or routeAction must not be\nset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "priority"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleHeaderAction:RegionUrlMapPathMatcherRouteRuleHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request before forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request before forwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response before sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response before sending the response back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRule:RegionUrlMapPathMatcherRouteRuleMatchRule": {
            "properties": {
                "fullPathMatch": {
                    "type": "string",
                    "description": "For satisfying the matchRule condition, the path of the request must exactly\nmatch the value specified in fullPathMatch after removing any query parameters\nand anchor that may be part of the original URL. FullPathMatch must be between 1\nand 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must\nbe specified.\n"
                },
                "headerMatches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatch:RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatch"
                    },
                    "description": "Specifies a list of header match criteria, all of which must match corresponding\nheaders in the request.\nStructure is documented below.\n"
                },
                "ignoreCase": {
                    "type": "boolean",
                    "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive.\nDefaults to false.\n"
                },
                "metadataFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilter:RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilter"
                    },
                    "description": "Opaque filter criteria used by Loadbalancer to restrict routing configuration to\na limited set xDS compliant clients. In their xDS requests to Loadbalancer, xDS\nclients present node metadata. If a match takes place, the relevant routing\nconfiguration is made available to those proxies. For each metadataFilter in\nthis list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the\nfilterLabels must match the corresponding label provided in the metadata. If its\nfilterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match\nwith corresponding labels in the provided metadata. metadataFilters specified\nhere can be overrides those specified in ForwardingRule that refers to this\nUrlMap. metadataFilters only applies to Loadbalancers that have their\nloadBalancingScheme set to INTERNAL_SELF_MANAGED.\nStructure is documented below.\n"
                },
                "pathTemplateMatch": {
                    "type": "string",
                    "description": "For satisfying the matchRule condition, the path of the request\nmust match the wildcard pattern specified in pathTemplateMatch\nafter removing any query parameters and anchor that may be part\nof the original URL.\npathTemplateMatch must be between 1 and 255 characters\n(inclusive).  The pattern specified by pathTemplateMatch may\nhave at most 5 wildcard operators and at most 5 variable\ncaptures in total.\n"
                },
                "prefixMatch": {
                    "type": "string",
                    "description": "For satisfying the matchRule condition, the request's path must begin with the\nspecified prefixMatch. prefixMatch must begin with a /. The value must be\nbetween 1 and 1024 characters. Only one of prefixMatch, fullPathMatch or\nregexMatch must be specified.\n"
                },
                "queryParameterMatches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatch:RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatch"
                    },
                    "description": "Specifies a list of query parameter match criteria, all of which must match\ncorresponding query parameters in the request.\nStructure is documented below.\n"
                },
                "regexMatch": {
                    "type": "string",
                    "description": "For satisfying the matchRule condition, the path of the request must satisfy the\nregular expression specified in regexMatch after removing any query parameters\nand anchor supplied with the original URL. For regular expression grammar please\nsee en.cppreference.com/w/cpp/regex/ecmascript  Only one of prefixMatch,\nfullPathMatch or regexMatch must be specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatch:RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatch": {
            "properties": {
                "exactMatch": {
                    "type": "string",
                    "description": "The value should exactly match contents of exactMatch. Only one of exactMatch,\nprefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.\n"
                },
                "headerName": {
                    "type": "string",
                    "description": "The name of the HTTP header to match. For matching against the HTTP request's\nauthority, use a headerMatch with the header name \":authority\". For matching a\nrequest's method, use the headerName \":method\".\n"
                },
                "invertMatch": {
                    "type": "boolean",
                    "description": "If set to false, the headerMatch is considered a match if the match criteria\nabove are met. If set to true, the headerMatch is considered a match if the\nmatch criteria above are NOT met. Defaults to false.\n"
                },
                "prefixMatch": {
                    "type": "string",
                    "description": "The value of the header must start with the contents of prefixMatch. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.\n"
                },
                "presentMatch": {
                    "type": "boolean",
                    "description": "A header with the contents of headerName must exist. The match takes place\nwhether or not the request's header has a value or not. Only one of exactMatch,\nprefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.\n"
                },
                "rangeMatch": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatch:RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatch",
                    "description": "The header value must be an integer and its value must be in the range specified\nin rangeMatch. If the header does not contain an integer, number or is empty,\nthe match fails. For example for a range [-5, 0]\n* -3 will match\n* 0 will not match\n* 0.25 will not match\n* -3someString will not match.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or\nrangeMatch must be set.\nStructure is documented below.\n"
                },
                "regexMatch": {
                    "type": "string",
                    "description": "The value of the header must match the regular expression specified in\nregexMatch. For regular expression grammar, please see:\nen.cppreference.com/w/cpp/regex/ecmascript  For matching against a port\nspecified in the HTTP request, use a headerMatch with headerName set to PORT and\na regular expression that satisfies the RFC2616 Host header's port specifier.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or\nrangeMatch must be set.\n"
                },
                "suffixMatch": {
                    "type": "string",
                    "description": "The value of the header must end with the contents of suffixMatch. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatch:RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatch": {
            "properties": {
                "rangeEnd": {
                    "type": "integer",
                    "description": "The end of the range (exclusive).\n"
                },
                "rangeStart": {
                    "type": "integer",
                    "description": "The start of the range (inclusive).\n"
                }
            },
            "type": "object",
            "required": [
                "rangeEnd",
                "rangeStart"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilter:RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilter": {
            "properties": {
                "filterLabels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel:RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel"
                    },
                    "description": "The list of label value pairs that must match labels in the provided metadata\nbased on filterMatchCriteria  This list must not be empty and can have at the\nmost 64 entries.\nStructure is documented below.\n"
                },
                "filterMatchCriteria": {
                    "type": "string",
                    "description": "Specifies how individual filterLabel matches within the list of filterLabels\ncontribute towards the overall metadataFilter match. Supported values are:\n* MATCH_ANY: At least one of the filterLabels must have a matching label in the\nprovided metadata.\n* MATCH_ALL: All filterLabels must have matching labels in\nthe provided metadata.\nPossible values are: `MATCH_ALL`, `MATCH_ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "filterLabels",
                "filterMatchCriteria"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel:RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of metadata label. The name can have a maximum length of 1024 characters\nand must be at least 1 character long.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the label must match the specified value. value can have a maximum\nlength of 1024 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatch:RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatch": {
            "properties": {
                "exactMatch": {
                    "type": "string",
                    "description": "The queryParameterMatch matches if the value of the parameter exactly matches\nthe contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch\nmust be set.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the query parameter to match. The query parameter must exist in the\nrequest, in the absence of which the request match fails.\n"
                },
                "presentMatch": {
                    "type": "boolean",
                    "description": "Specifies that the queryParameterMatch matches if the request contains the query\nparameter, irrespective of whether the parameter has a value or not. Only one of\npresentMatch, exactMatch and regexMatch must be set.\n"
                },
                "regexMatch": {
                    "type": "string",
                    "description": "The queryParameterMatch matches if the value of the parameter matches the\nregular expression specified by regexMatch. For the regular expression grammar,\nplease see en.cppreference.com/w/cpp/regex/ecmascript  Only one of presentMatch,\nexactMatch and regexMatch must be set.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteAction:RegionUrlMapPathMatcherRouteRuleRouteAction": {
            "properties": {
                "corsPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionCorsPolicy:RegionUrlMapPathMatcherRouteRuleRouteActionCorsPolicy",
                    "description": "The specification for allowing client side cross-origin requests. Please see W3C\nRecommendation for Cross Origin Resource Sharing\nStructure is documented below.\n"
                },
                "faultInjectionPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy:RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy",
                    "description": "The specification for fault injection introduced into traffic to test the\nresiliency of clients to backend service failure. As part of fault injection,\nwhen clients send requests to a backend service, delays can be introduced by\nLoadbalancer on a percentage of requests before sending those request to the\nbackend service. Similarly requests from clients can be aborted by the\nLoadbalancer for a percentage of requests. timeout and\u003cspan pulumi-lang-nodejs=\" retryPolicy \" pulumi-lang-dotnet=\" RetryPolicy \" pulumi-lang-go=\" retryPolicy \" pulumi-lang-python=\" retry_policy \" pulumi-lang-yaml=\" retryPolicy \" pulumi-lang-java=\" retryPolicy \" pulumi-lang-hcl=\" retry_policy \"\u003e retryPolicy \u003c/span\u003ewill be\nignored by clients that are configured with a fault_injection_policy.\nStructure is documented below.\n"
                },
                "requestMirrorPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy:RegionUrlMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy",
                    "description": "Specifies the policy on how requests intended for the route's backends are\nshadowed to a separate mirrored backend service. Loadbalancer does not wait for\nresponses from the shadow service. Prior to sending traffic to the shadow\nservice, the host / authority header is suffixed with -shadow.\nStructure is documented below.\n"
                },
                "retryPolicy": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionRetryPolicy:RegionUrlMapPathMatcherRouteRuleRouteActionRetryPolicy",
                    "description": "Specifies the retry policy associated with this route.\nStructure is documented below.\n"
                },
                "timeout": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionTimeout:RegionUrlMapPathMatcherRouteRuleRouteActionTimeout",
                    "description": "Specifies the timeout for the selected route. Timeout is computed from the time\nthe request is has been fully processed (i.e. end-of-stream) up until the\nresponse has been completely processed. Timeout includes all retries. If not\nspecified, the default value is 15 seconds.\nStructure is documented below.\n"
                },
                "urlRewrite": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewrite:RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewrite",
                    "description": "The spec to modify the URL of the request, prior to forwarding the request to\nthe matched service\nStructure is documented below.\n"
                },
                "weightedBackendServices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendService:RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendService"
                    },
                    "description": "A list of weighted backend services to send traffic to when a route match\noccurs. The weights determine the fraction of traffic that flows to their\ncorresponding backend service. If all traffic needs to go to a single backend\nservice, there must be one  weightedBackendService with weight set to a non 0\nnumber. Once a backendService is identified and before forwarding the request to\nthe backend service, advanced routing actions like Url rewrites and header\ntransformations are applied depending on additional settings specified in this\nHttpRouteAction.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionCorsPolicy:RegionUrlMapPathMatcherRouteRuleRouteActionCorsPolicy": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials. This field translates to the Access-Control-Allow-Credentials header.\nDefault is false.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Methods header.\n"
                },
                "allowOriginRegexes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the regualar expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "allowOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "If true, the setting specifies the CORS policy is disabled. The default value of false, which indicates that the CORS policy is in effect.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "integer",
                    "description": "Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy:RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy": {
            "properties": {
                "abort": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbort:RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbort",
                    "description": "The specification for how client requests are aborted as part of fault injection.\nStructure is documented below.\n"
                },
                "delay": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelay:RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelay",
                    "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbort:RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbort": {
            "properties": {
                "httpStatus": {
                    "type": "integer",
                    "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelay:RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelay": {
            "properties": {
                "fixedDelay": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelayFixedDelay:RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelayFixedDelay",
                    "description": "Specifies the value of the fixed delay interval.\nStructure is documented below.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelayFixedDelay:RegionUrlMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelayFixedDelay": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy:RegionUrlMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the RegionBackendService resource being mirrored to.\nThe backend service configured for a mirroring policy must reference backends that are of the same type as the original backend service matched in the URL map.\nServerless NEG backends are not currently supported as a mirrored backend service.\n"
                },
                "mirrorPercent": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe percentage of requests to be mirrored to backendService.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionRetryPolicy:RegionUrlMapPathMatcherRouteRuleRouteActionRetryPolicy": {
            "properties": {
                "numRetries": {
                    "type": "integer",
                    "description": "Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.\n"
                },
                "perTryTimeout": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionRetryPolicyPerTryTimeout:RegionUrlMapPathMatcherRouteRuleRouteActionRetryPolicyPerTryTimeout",
                    "description": "Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "retryConditions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies one or more conditions when this retry policy applies.\nValid values are listed below. Only the following codes are supported when the URL map is bound to target gRPC proxy that has validateForProxyless field set to true: cancelled, deadline-exceeded, internal, resource-exhausted, unavailable.\n- 5xx : retry is attempted if the instance or endpoint responds with any 5xx response code, or if the instance or endpoint does not respond at all. For example, disconnects, reset, read timeout, connection failure, and refused streams.\n- gateway-error : Similar to 5xx, but only applies to response codes 502, 503 or 504.\n- connect-failure : a retry is attempted on failures connecting to the instance or endpoint. For example, connection timeouts.\n- retriable-4xx : a retry is attempted if the instance or endpoint responds with a 4xx response code. The only error that you can retry is error code 409.\n- refused-stream : a retry is attempted if the instance or endpoint resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry.\n- cancelled : a retry is attempted if the gRPC status code in the response header is set to cancelled.\n- deadline-exceeded : a retry is attempted if the gRPC status code in the response header is set to deadline-exceeded.\n- internal :  a retry is attempted if the gRPC status code in the response header is set to internal.\n- resource-exhausted : a retry is attempted if the gRPC status code in the response header is set to resource-exhausted.\n- unavailable : a retry is attempted if the gRPC status code in the response header is set to unavailable.\n"
                }
            },
            "type": "object",
            "required": [
                "numRetries"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionRetryPolicyPerTryTimeout:RegionUrlMapPathMatcherRouteRuleRouteActionRetryPolicyPerTryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionTimeout:RegionUrlMapPathMatcherRouteRuleRouteActionTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewrite:RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewrite": {
            "properties": {
                "hostRewrite": {
                    "type": "string",
                    "description": "Before forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite.\nThe value must be from 1 to 255 characters.\n"
                },
                "pathPrefixRewrite": {
                    "type": "string",
                    "description": "Before forwarding the request to the selected backend service, the matching portion of the request's path is replaced by pathPrefixRewrite.\nThe value must be from 1 to 1024 characters.\n"
                },
                "pathTemplateRewrite": {
                    "type": "string",
                    "description": "If specified, the pattern rewrites the URL path (based on the :path header) using the HTTP template syntax.\nA corresponding pathTemplateMatch must be specified. Any template variables must exist in the pathTemplateMatch field.\n* At least one variable must be specified in the pathTemplateMatch field\n* You can omit variables from the rewritten URL\n* The * and ** operators cannot be matched unless they have a corresponding variable name - e.g. {format=*} or {var=**}.\nFor example, a pathTemplateMatch of /static/{format=**} could be rewritten as /static/content/{format} to prefix\n/content to the URL. Variables can also be re-ordered in a rewrite, so that /{country}/{format}/{suffix=**} can be\nrewritten as /content/{format}/{country}/{suffix}.\nAt least one non-empty routeRules[].matchRules[].path_template_match is required.\nOnly one of pathPrefixRewrite or pathTemplateRewrite may be specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendService:RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendService": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the default BackendService resource. Before forwarding the request to backendService, the load balancer applies any relevant headerActions specified as part of this backendServiceWeight.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderAction:RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.\nheaderAction is not supported for load balancers that have their loadBalancingScheme set to EXTERNAL.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Specifies the fraction of traffic sent to a backend service, computed as weight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request has been directed to a backend service, subsequent requests are sent to the same backend service as determined by the backend service's session affinity policy.\nThe value must be from 0 to 1000.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService",
                "weight"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderAction:RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request before forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request before forwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response before sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response before sending the response back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:RegionUrlMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/RegionUrlMapPathMatcherRouteRuleUrlRedirect:RegionUrlMapPathMatcherRouteRuleUrlRedirect": {
            "properties": {
                "hostRedirect": {
                    "type": "string",
                    "description": "The host that will be used in the redirect response instead of the one\nthat was supplied in the request. The value must be between 1 and 255\ncharacters.\n"
                },
                "httpsRedirect": {
                    "type": "boolean",
                    "description": "If set to true, the URL scheme in the redirected request is set to https.\nIf set to false, the URL scheme of the redirected request will remain the\nsame as that of the request. This must only be set for UrlMaps used in\nTargetHttpProxys. Setting this true for TargetHttpsProxy is not\npermitted. The default is set to false.\n"
                },
                "pathRedirect": {
                    "type": "string",
                    "description": "The path that will be used in the redirect response instead of the one\nthat was supplied in the request. pathRedirect cannot be supplied\ntogether with prefixRedirect. Supply one alone or neither. If neither is\nsupplied, the path of the original request will be used for the redirect.\nThe value must be between 1 and 1024 characters.\n"
                },
                "prefixRedirect": {
                    "type": "string",
                    "description": "The prefix that replaces the prefixMatch specified in the\nHttpRouteRuleMatch, retaining the remaining portion of the URL before\nredirecting the request. prefixRedirect cannot be supplied together with\npathRedirect. Supply one alone or neither. If neither is supplied, the\npath of the original request will be used for the redirect. The value\nmust be between 1 and 1024 characters.\n"
                },
                "redirectResponseCode": {
                    "type": "string",
                    "description": "The HTTP Status code to use for this RedirectAction. Supported values are:\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n* FOUND, which corresponds to 302.\n* SEE_OTHER which corresponds to 303.\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained.\n"
                },
                "stripQuery": {
                    "type": "boolean",
                    "description": "If set to true, any accompanying query portion of the original URL is removed\nprior to redirecting the request. If set to false, the query portion of the\noriginal URL is retained.\nThis field is required to ensure an empty block is not set. The normal default value is false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RegionUrlMapTest:RegionUrlMapTest": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of this test case.\n"
                },
                "host": {
                    "type": "string",
                    "description": "Host portion of the URL.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path portion of the URL.\n"
                },
                "service": {
                    "type": "string",
                    "description": "A reference to expected RegionBackendService resource the given URL should be mapped to.\n"
                }
            },
            "type": "object",
            "required": [
                "host",
                "path",
                "service"
            ]
        },
        "gcp:compute/ReservationDeleteAfterDuration:ReservationDeleteAfterDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Number of nanoseconds for the auto-delete duration.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "string",
                    "description": "Number of seconds for the auto-delete duration.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/ReservationParams:ReservationParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the reservation. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/ReservationReservationSharingPolicy:ReservationReservationSharingPolicy": {
            "properties": {
                "serviceShareType": {
                    "type": "string",
                    "description": "Sharing config for all Google Cloud services.\nPossible values are: `ALLOW_ALL`, `DISALLOW_ALL`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "serviceShareType"
                    ]
                }
            }
        },
        "gcp:compute/ReservationResourceStatus:ReservationResourceStatus": {
            "properties": {
                "healthInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ReservationResourceStatusHealthInfo:ReservationResourceStatusHealthInfo"
                    },
                    "description": "(Output)\nHealth information for the reservation.\nStructure is documented below.\n"
                },
                "reservationBlockCount": {
                    "type": "integer",
                    "description": "(Output)\nThe number of reservation blocks associated with this reservation.\n"
                },
                "reservationMaintenances": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ReservationResourceStatusReservationMaintenance:ReservationResourceStatusReservationMaintenance"
                    },
                    "description": "(Output)\nMaintenance information for this reservation\nStructure is documented below.\n"
                },
                "specificSkuAllocations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ReservationResourceStatusSpecificSkuAllocation:ReservationResourceStatusSpecificSkuAllocation"
                    },
                    "description": "(Output)\nAllocation Properties of this reservation.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "healthInfos",
                        "reservationBlockCount",
                        "reservationMaintenances",
                        "specificSkuAllocations"
                    ]
                }
            }
        },
        "gcp:compute/ReservationResourceStatusHealthInfo:ReservationResourceStatusHealthInfo": {
            "properties": {
                "degradedBlockCount": {
                    "type": "integer",
                    "description": "(Output)\nThe number of reservation blocks that are degraded.\n"
                },
                "healthStatus": {
                    "type": "string",
                    "description": "(Output)\nThe health status of the reservation.\n"
                },
                "healthyBlockCount": {
                    "type": "integer",
                    "description": "(Output)\nThe number of reservation blocks that are healthy.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "degradedBlockCount",
                        "healthStatus",
                        "healthyBlockCount"
                    ]
                }
            }
        },
        "gcp:compute/ReservationResourceStatusReservationMaintenance:ReservationResourceStatusReservationMaintenance": {
            "properties": {
                "instanceMaintenanceOngoingCount": {
                    "type": "integer",
                    "description": "(Output)\nDescribes number of instances that have ongoing maintenance.\n"
                },
                "instanceMaintenancePendingCount": {
                    "type": "integer",
                    "description": "(Output)\nDescribes number of instances that have pending maintenance.\n"
                },
                "maintenanceOngoingCount": {
                    "type": "integer",
                    "description": "(Output)\nProgress for ongoing maintenance for this group of VMs/hosts. Describes number of hosts in the block that have ongoing maintenance.\n"
                },
                "maintenancePendingCount": {
                    "type": "integer",
                    "description": "(Output)\nProgress for ongoing maintenance for this group of VMs/hosts. Describes number of hosts in the block that have pending maintenance.\n"
                },
                "schedulingType": {
                    "type": "string",
                    "description": "(Output)\nThe type of maintenance for the reservation.\n"
                },
                "subblockInfraMaintenanceOngoingCount": {
                    "type": "integer",
                    "description": "(Output)\nDescribes number of subblock Infrastructure that has ongoing maintenance. Here, Subblock Infrastructure Maintenance pertains to upstream hardware contained in the Subblock that is necessary for a VM Family(e.g. NVLink Domains). Not all VM Families will support this field.\n"
                },
                "subblockInfraMaintenancePendingCount": {
                    "type": "integer",
                    "description": "(Output)\nDescribes number of subblock Infrastructure that has pending maintenance. Here, Subblock Infrastructure Maintenance pertains to upstream hardware contained in the Subblock that is necessary for a VM Family (e.g. NVLink Domains). Not all VM Families will support this field.\n"
                },
                "upcomingGroupMaintenances": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ReservationResourceStatusReservationMaintenanceUpcomingGroupMaintenance:ReservationResourceStatusReservationMaintenanceUpcomingGroupMaintenance"
                    },
                    "description": "(Output)\nMaintenance information on this group of VMs.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "instanceMaintenanceOngoingCount",
                        "instanceMaintenancePendingCount",
                        "maintenanceOngoingCount",
                        "maintenancePendingCount",
                        "schedulingType",
                        "subblockInfraMaintenanceOngoingCount",
                        "subblockInfraMaintenancePendingCount",
                        "upcomingGroupMaintenances"
                    ]
                }
            }
        },
        "gcp:compute/ReservationResourceStatusReservationMaintenanceUpcomingGroupMaintenance:ReservationResourceStatusReservationMaintenanceUpcomingGroupMaintenance": {
            "properties": {
                "canReschedule": {
                    "type": "boolean",
                    "description": "(Output)\nIndicates if the maintenance can be customer triggered.\n"
                },
                "latestWindowStartTime": {
                    "type": "string",
                    "description": "(Output)\nThe latest time for the planned maintenance window to start. This timestamp value is in RFC3339 text format.\n"
                },
                "maintenanceOnShutdown": {
                    "type": "boolean",
                    "description": "(Output)\nIndicates whether the UpcomingMaintenance will be triggered on VM shutdown.\n"
                },
                "maintenanceReasons": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe reasons for the maintenance. Only valid for vms.\n"
                },
                "maintenanceStatus": {
                    "type": "string",
                    "description": "(Output)\nStatus of the maintenance.\n"
                },
                "type": {
                    "type": "string",
                    "description": "(Output)\nDefines the type of maintenance.\n"
                },
                "windowEndTime": {
                    "type": "string",
                    "description": "(Output)\nThe time by which the maintenance disruption will be completed. This timestamp value is in RFC3339 text format.\n"
                },
                "windowStartTime": {
                    "type": "string",
                    "description": "(Output)\nThe current start time of the maintenance window. This timestamp value is in RFC3339 text format.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "canReschedule",
                        "latestWindowStartTime",
                        "maintenanceOnShutdown",
                        "maintenanceReasons",
                        "maintenanceStatus",
                        "type",
                        "windowEndTime",
                        "windowStartTime"
                    ]
                }
            }
        },
        "gcp:compute/ReservationResourceStatusSpecificSkuAllocation:ReservationResourceStatusSpecificSkuAllocation": {
            "properties": {
                "sourceInstanceTemplateId": {
                    "type": "string",
                    "description": "(Output)\nID of the instance template used to populate reservation properties.\n"
                },
                "utilizations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nPer service utilization breakdown. The Key is the Google Cloud managed service name.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sourceInstanceTemplateId",
                        "utilizations"
                    ]
                }
            }
        },
        "gcp:compute/ReservationShareSettings:ReservationShareSettings": {
            "properties": {
                "projectMaps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ReservationShareSettingsProjectMap:ReservationShareSettingsProjectMap"
                    },
                    "description": "A map of project number and project config. This is only valid when shareType's value is SPECIFIC_PROJECTS.\nStructure is documented below.\n"
                },
                "projects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional, Beta)\nList of project IDs with which the reservation is shared.\n"
                },
                "shareType": {
                    "type": "string",
                    "description": "Type of sharing for this shared-reservation\nPossible values are: `LOCAL`, `SPECIFIC_PROJECTS`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "shareType"
                    ]
                }
            }
        },
        "gcp:compute/ReservationShareSettingsProjectMap:ReservationShareSettingsProjectMap": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The project id/number, should be same as the key of this project config in the project map.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "gcp:compute/ReservationSpecificReservation:ReservationSpecificReservation": {
            "properties": {
                "assuredCount": {
                    "type": "integer",
                    "description": "(Output)\nIndicates how many instances are actually usable currently.\n"
                },
                "count": {
                    "type": "integer",
                    "description": "The number of resources that are allocated.\n"
                },
                "inUseCount": {
                    "type": "integer",
                    "description": "(Output)\nHow many instances are in use.\n"
                },
                "instanceProperties": {
                    "$ref": "#/types/gcp:compute/ReservationSpecificReservationInstanceProperties:ReservationSpecificReservationInstanceProperties",
                    "description": "The instance properties for the reservation.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "sourceInstanceTemplate": {
                    "type": "string",
                    "description": "Specifies the instance template to create the reservation. If you use this field, you must exclude the\ninstanceProperties field.\n"
                }
            },
            "type": "object",
            "required": [
                "count"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "assuredCount",
                        "count",
                        "inUseCount",
                        "instanceProperties"
                    ]
                }
            }
        },
        "gcp:compute/ReservationSpecificReservationInstanceProperties:ReservationSpecificReservationInstanceProperties": {
            "properties": {
                "guestAccelerators": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ReservationSpecificReservationInstancePropertiesGuestAccelerator:ReservationSpecificReservationInstancePropertiesGuestAccelerator"
                    },
                    "description": "Guest accelerator type and count.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "localSsds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ReservationSpecificReservationInstancePropertiesLocalSsd:ReservationSpecificReservationInstancePropertiesLocalSsd"
                    },
                    "description": "The amount of local ssd to reserve with each instance. This\nreserves disks of type `local-ssd`.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "locationHint": {
                    "type": "string",
                    "description": "(Output)\nAn opaque location hint used to place the allocation close to other resources. This field is for use by internal tools that use the public API.\n"
                },
                "machineType": {
                    "type": "string",
                    "description": "The name of the machine type to reserve.\n",
                    "willReplaceOnChanges": true
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "(Optional, Beta)\nSpecifies the frequency of planned maintenance events.\nPossible values are: `AS_NEEDED`, `PERIODIC`, `RECURRENT`.\n",
                    "willReplaceOnChanges": true
                },
                "minCpuPlatform": {
                    "type": "string",
                    "description": "The minimum CPU platform for the reservation. For example,\n`\"Intel Skylake\"`. See\nthe CPU platform availability reference](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform#availablezones)\nfor information on available CPU platforms.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "machineType"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "locationHint",
                        "machineType",
                        "minCpuPlatform"
                    ]
                }
            }
        },
        "gcp:compute/ReservationSpecificReservationInstancePropertiesGuestAccelerator:ReservationSpecificReservationInstancePropertiesGuestAccelerator": {
            "properties": {
                "acceleratorCount": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to\nthis instance.\n",
                    "willReplaceOnChanges": true
                },
                "acceleratorType": {
                    "type": "string",
                    "description": "The full or partial URL of the accelerator type to\nattach to this instance. For example:\n`projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100`\nIf you are creating an instance template, specify only the accelerator name.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "acceleratorCount",
                "acceleratorType"
            ]
        },
        "gcp:compute/ReservationSpecificReservationInstancePropertiesLocalSsd:ReservationSpecificReservationInstancePropertiesLocalSsd": {
            "properties": {
                "diskSizeGb": {
                    "type": "integer",
                    "description": "The size of the disk in base-2 GB.\n",
                    "willReplaceOnChanges": true
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface to use for attaching this disk.\nDefault value is `SCSI`.\nPossible values are: `SCSI`, `NVME`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "diskSizeGb"
            ]
        },
        "gcp:compute/ResizeRequestRequestedRunDuration:ResizeRequestRequestedRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n",
                    "willReplaceOnChanges": true
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 600 to 604800 inclusive. Note: minimum and maximum allowed range for requestedRunDuration is 10 minutes (600 seconds) and 7 days(604800 seconds) correspondingly.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/ResizeRequestStatus:ResizeRequestStatus": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusError:ResizeRequestStatusError"
                    },
                    "description": "(Output)\nFatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.\nStructure is documented below.\n"
                },
                "lastAttempts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttempt:ResizeRequestStatusLastAttempt"
                    },
                    "description": "(Output)\nInformation about the last attempt to fulfill the request. The value is temporary since the ResizeRequest can retry, as long as it's still active and the last attempt value can either be cleared or replaced with a different error. Since ResizeRequest retries infrequently, the value may be stale and no longer show an active problem. The value is cleared when ResizeRequest transitions to the final state (becomes inactive). If the final state is FAILED the error describing it will be storred in the \"error\" field only.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors",
                        "lastAttempts"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusError:ResizeRequestStatusError": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusErrorError:ResizeRequestStatusErrorError"
                    },
                    "description": "(Output)\nThe array of errors encountered while processing this operation.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusErrorError:ResizeRequestStatusErrorError": {
            "properties": {
                "code": {
                    "type": "string",
                    "description": "(Output)\nThe error type identifier for this error.\n"
                },
                "errorDetails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetail:ResizeRequestStatusErrorErrorErrorDetail"
                    },
                    "description": "(Output)\nAn array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.\nStructure is documented below.\n"
                },
                "location": {
                    "type": "string",
                    "description": "(Output)\nIndicates the field in the request that caused the error. This property is optional.\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nThe localized error message in the above locale.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "code",
                        "errorDetails",
                        "location",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusErrorErrorErrorDetail:ResizeRequestStatusErrorErrorErrorDetail": {
            "properties": {
                "errorInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailErrorInfo:ResizeRequestStatusErrorErrorErrorDetailErrorInfo"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "helps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailHelp:ResizeRequestStatusErrorErrorErrorDetailHelp"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "localizedMessages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage:ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "quotaInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailQuotaInfo:ResizeRequestStatusErrorErrorErrorDetailQuotaInfo"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errorInfos",
                        "helps",
                        "localizedMessages",
                        "quotaInfos"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusErrorErrorErrorDetailErrorInfo:ResizeRequestStatusErrorErrorErrorDetailErrorInfo": {
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "(Output)\nThe logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\".\n"
                },
                "metadatas": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nAdditional structured details about this error.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nThe reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "domain",
                        "metadatas",
                        "reason"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusErrorErrorErrorDetailHelp:ResizeRequestStatusErrorErrorErrorDetailHelp": {
            "properties": {
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusErrorErrorErrorDetailHelpLink:ResizeRequestStatusErrorErrorErrorDetailHelpLink"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "links"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusErrorErrorErrorDetailHelpLink:ResizeRequestStatusErrorErrorErrorDetailHelpLink": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of this resize-request.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe URL of the link.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "url"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage:ResizeRequestStatusErrorErrorErrorDetailLocalizedMessage": {
            "properties": {
                "locale": {
                    "type": "string",
                    "description": "(Output)\nThe locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\"\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nThe localized error message in the above locale.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "locale",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusErrorErrorErrorDetailQuotaInfo:ResizeRequestStatusErrorErrorErrorDetailQuotaInfo": {
            "properties": {
                "dimensions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe map holding related quota dimensions\n"
                },
                "futureLimit": {
                    "type": "integer",
                    "description": "(Output)\nFuture quota limit being rolled out. The limit's unit depends on the quota type or metric.\n"
                },
                "limit": {
                    "type": "integer",
                    "description": "(Output)\nCurrent effective quota limit. The limit's unit depends on the quota type or metric.\n"
                },
                "limitName": {
                    "type": "string",
                    "description": "(Output)\nThe name of the quota limit.\n"
                },
                "metricName": {
                    "type": "string",
                    "description": "(Output)\nThe Compute Engine quota metric name.\n"
                },
                "rolloutStatus": {
                    "type": "string",
                    "description": "(Output)\nRollout status of the future quota limit.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dimensions",
                        "futureLimit",
                        "limit",
                        "limitName",
                        "metricName",
                        "rolloutStatus"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttempt:ResizeRequestStatusLastAttempt": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptError:ResizeRequestStatusLastAttemptError"
                    },
                    "description": "(Output)\nFatal errors encountered during the queueing or provisioning phases of the ResizeRequest that caused the transition to the FAILED state. Contrary to the lastAttempt errors, this field is final and errors are never removed from here, as the ResizeRequest is not going to retry.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttemptError:ResizeRequestStatusLastAttemptError": {
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorError:ResizeRequestStatusLastAttemptErrorError"
                    },
                    "description": "(Output)\nThe array of errors encountered while processing this operation.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errors"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttemptErrorError:ResizeRequestStatusLastAttemptErrorError": {
            "properties": {
                "code": {
                    "type": "string",
                    "description": "(Output)\nThe error type identifier for this error.\n"
                },
                "errorDetails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetail:ResizeRequestStatusLastAttemptErrorErrorErrorDetail"
                    },
                    "description": "(Output)\nAn array of messages that contain the error details. There is a set of defined message types to use for providing details.The syntax depends on the error code. For example, QuotaExceededInfo will have details when the error code is QUOTA_EXCEEDED.\nStructure is documented below.\n"
                },
                "location": {
                    "type": "string",
                    "description": "(Output)\nIndicates the field in the request that caused the error. This property is optional.\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nThe localized error message in the above locale.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "code",
                        "errorDetails",
                        "location",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetail:ResizeRequestStatusLastAttemptErrorErrorErrorDetail": {
            "properties": {
                "errorInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo:ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "helps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp:ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "localizedMessages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage:ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                },
                "quotaInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo:ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "errorInfos",
                        "helps",
                        "localizedMessages",
                        "quotaInfos"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo:ResizeRequestStatusLastAttemptErrorErrorErrorDetailErrorInfo": {
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "(Output)\nThe logical grouping to which the \"reason\" belongs. The error domain is typically the registered service name of the tool or product that generates the error. Example: \"pubsub.googleapis.com\".\n"
                },
                "metadatas": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nAdditional structured details about this error.\n"
                },
                "reason": {
                    "type": "string",
                    "description": "(Output)\nThe reason of the error. This is a constant value that identifies the proximate cause of the error. Error reasons are unique within a particular domain of errors.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "domain",
                        "metadatas",
                        "reason"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp:ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelp": {
            "properties": {
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink:ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink"
                    },
                    "description": "(Output)\nA nested object resource.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "links"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink:ResizeRequestStatusLastAttemptErrorErrorErrorDetailHelpLink": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of this resize-request.\n"
                },
                "url": {
                    "type": "string",
                    "description": "(Output)\nThe URL of the link.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "description",
                        "url"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage:ResizeRequestStatusLastAttemptErrorErrorErrorDetailLocalizedMessage": {
            "properties": {
                "locale": {
                    "type": "string",
                    "description": "(Output)\nThe locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\"\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nThe localized error message in the above locale.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "locale",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo:ResizeRequestStatusLastAttemptErrorErrorErrorDetailQuotaInfo": {
            "properties": {
                "dimensions": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Output)\nThe map holding related quota dimensions\n"
                },
                "futureLimit": {
                    "type": "integer",
                    "description": "(Output)\nFuture quota limit being rolled out. The limit's unit depends on the quota type or metric.\n"
                },
                "limit": {
                    "type": "integer",
                    "description": "(Output)\nCurrent effective quota limit. The limit's unit depends on the quota type or metric.\n"
                },
                "limitName": {
                    "type": "string",
                    "description": "(Output)\nThe name of the quota limit.\n"
                },
                "metricName": {
                    "type": "string",
                    "description": "(Output)\nThe Compute Engine quota metric name.\n"
                },
                "rolloutStatus": {
                    "type": "string",
                    "description": "(Output)\nRollout status of the future quota limit.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "dimensions",
                        "futureLimit",
                        "limit",
                        "limitName",
                        "metricName",
                        "rolloutStatus"
                    ]
                }
            }
        },
        "gcp:compute/ResourcePolicyDiskConsistencyGroupPolicy:ResourcePolicyDiskConsistencyGroupPolicy": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable disk consistency on the resource policy.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "gcp:compute/ResourcePolicyGroupPlacementPolicy:ResourcePolicyGroupPlacementPolicy": {
            "properties": {
                "availabilityDomainCount": {
                    "type": "integer",
                    "description": "The number of availability domains instances will be spread across. If two instances are in different\navailability domain, they will not be put in the same low latency network\n"
                },
                "collocation": {
                    "type": "string",
                    "description": "Collocation specifies whether to place VMs inside the same availability domain on the same low-latency network.\nSpecify `COLLOCATED` to enable collocation. Can only be specified with \u003cspan pulumi-lang-nodejs=\"`vmCount`\" pulumi-lang-dotnet=\"`VmCount`\" pulumi-lang-go=\"`vmCount`\" pulumi-lang-python=\"`vm_count`\" pulumi-lang-yaml=\"`vmCount`\" pulumi-lang-java=\"`vmCount`\" pulumi-lang-hcl=\"`vm_count`\"\u003e`vmCount`\u003c/span\u003e. If compute instances are created\nwith a COLLOCATED policy, then exactly \u003cspan pulumi-lang-nodejs=\"`vmCount`\" pulumi-lang-dotnet=\"`VmCount`\" pulumi-lang-go=\"`vmCount`\" pulumi-lang-python=\"`vm_count`\" pulumi-lang-yaml=\"`vmCount`\" pulumi-lang-java=\"`vmCount`\" pulumi-lang-hcl=\"`vm_count`\"\u003e`vmCount`\u003c/span\u003e instances must be created at the same time with the resource policy\nattached.\nPossible values are: `COLLOCATED`.\n"
                },
                "gpuTopology": {
                    "type": "string",
                    "description": "Specifies the shape of the GPU slice, in slice based GPU families eg. A4X.\n",
                    "willReplaceOnChanges": true
                },
                "maxDistance": {
                    "type": "integer",
                    "description": "(Optional, Beta)\nSpecifies the number of max logical switches.\n"
                },
                "tpuTopology": {
                    "type": "string",
                    "description": "(Optional, Beta)\nSpecifies the shape of the TPU slice.\n",
                    "willReplaceOnChanges": true
                },
                "vmCount": {
                    "type": "integer",
                    "description": "Number of VMs in this placement group. Google does not recommend that you use this field\nunless you use a compact policy and you want your policy to work only if it contains this\nexact number of VMs.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/ResourcePolicyInstanceSchedulePolicy:ResourcePolicyInstanceSchedulePolicy": {
            "properties": {
                "expirationTime": {
                    "type": "string",
                    "description": "The expiration time of the schedule. The timestamp is an RFC3339 string.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "The start time of the schedule. The timestamp is an RFC3339 string.\n"
                },
                "timeZone": {
                    "type": "string",
                    "description": "Specifies the time zone to be used in interpreting the schedule. The value of this field must be a time zone name\nfrom the tz database: http://en.wikipedia.org/wiki/Tz_database.\n"
                },
                "vmStartSchedule": {
                    "$ref": "#/types/gcp:compute/ResourcePolicyInstanceSchedulePolicyVmStartSchedule:ResourcePolicyInstanceSchedulePolicyVmStartSchedule",
                    "description": "Specifies the schedule for starting instances.\nStructure is documented below.\n"
                },
                "vmStopSchedule": {
                    "$ref": "#/types/gcp:compute/ResourcePolicyInstanceSchedulePolicyVmStopSchedule:ResourcePolicyInstanceSchedulePolicyVmStopSchedule",
                    "description": "Specifies the schedule for stopping instances.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "timeZone"
            ]
        },
        "gcp:compute/ResourcePolicyInstanceSchedulePolicyVmStartSchedule:ResourcePolicyInstanceSchedulePolicyVmStartSchedule": {
            "properties": {
                "schedule": {
                    "type": "string",
                    "description": "Specifies the frequency for the operation, using the unix-cron format.\n"
                }
            },
            "type": "object",
            "required": [
                "schedule"
            ]
        },
        "gcp:compute/ResourcePolicyInstanceSchedulePolicyVmStopSchedule:ResourcePolicyInstanceSchedulePolicyVmStopSchedule": {
            "properties": {
                "schedule": {
                    "type": "string",
                    "description": "Specifies the frequency for the operation, using the unix-cron format.\n"
                }
            },
            "type": "object",
            "required": [
                "schedule"
            ]
        },
        "gcp:compute/ResourcePolicySnapshotSchedulePolicy:ResourcePolicySnapshotSchedulePolicy": {
            "properties": {
                "retentionPolicy": {
                    "$ref": "#/types/gcp:compute/ResourcePolicySnapshotSchedulePolicyRetentionPolicy:ResourcePolicySnapshotSchedulePolicyRetentionPolicy",
                    "description": "Retention policy applied to snapshots created by this resource policy.\nStructure is documented below.\n"
                },
                "schedule": {
                    "$ref": "#/types/gcp:compute/ResourcePolicySnapshotSchedulePolicySchedule:ResourcePolicySnapshotSchedulePolicySchedule",
                    "description": "Contains one of an `hourlySchedule`, `dailySchedule`, or `weeklySchedule`.\nStructure is documented below.\n"
                },
                "snapshotProperties": {
                    "$ref": "#/types/gcp:compute/ResourcePolicySnapshotSchedulePolicySnapshotProperties:ResourcePolicySnapshotSchedulePolicySnapshotProperties",
                    "description": "Properties with which the snapshots are created, such as labels.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "schedule"
            ]
        },
        "gcp:compute/ResourcePolicySnapshotSchedulePolicyRetentionPolicy:ResourcePolicySnapshotSchedulePolicyRetentionPolicy": {
            "properties": {
                "maxRetentionDays": {
                    "type": "integer",
                    "description": "Maximum age of the snapshot that is allowed to be kept.\n"
                },
                "onSourceDiskDelete": {
                    "type": "string",
                    "description": "Specifies the behavior to apply to scheduled snapshots when\nthe source disk is deleted.\nDefault value is `KEEP_AUTO_SNAPSHOTS`.\nPossible values are: `KEEP_AUTO_SNAPSHOTS`, `APPLY_RETENTION_POLICY`.\n"
                }
            },
            "type": "object",
            "required": [
                "maxRetentionDays"
            ]
        },
        "gcp:compute/ResourcePolicySnapshotSchedulePolicySchedule:ResourcePolicySnapshotSchedulePolicySchedule": {
            "properties": {
                "dailySchedule": {
                    "$ref": "#/types/gcp:compute/ResourcePolicySnapshotSchedulePolicyScheduleDailySchedule:ResourcePolicySnapshotSchedulePolicyScheduleDailySchedule",
                    "description": "The policy will execute every nth day at the specified time.\nStructure is documented below.\n"
                },
                "hourlySchedule": {
                    "$ref": "#/types/gcp:compute/ResourcePolicySnapshotSchedulePolicyScheduleHourlySchedule:ResourcePolicySnapshotSchedulePolicyScheduleHourlySchedule",
                    "description": "The policy will execute every nth hour starting at the specified time.\nStructure is documented below.\n"
                },
                "weeklySchedule": {
                    "$ref": "#/types/gcp:compute/ResourcePolicySnapshotSchedulePolicyScheduleWeeklySchedule:ResourcePolicySnapshotSchedulePolicyScheduleWeeklySchedule",
                    "description": "Allows specifying a snapshot time for each day of the week.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/ResourcePolicySnapshotSchedulePolicyScheduleDailySchedule:ResourcePolicySnapshotSchedulePolicyScheduleDailySchedule": {
            "properties": {
                "daysInCycle": {
                    "type": "integer",
                    "description": "Defines a schedule with units measured in days. The value determines how many days pass between the start of each cycle. Days in cycle for snapshot schedule policy must be 1.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "This must be in UTC format that resolves to one of\n00:00, 04:00, 08:00, 12:00, 16:00, or 20:00. For example,\nboth 13:00-5 and 08:00 are valid.\n"
                }
            },
            "type": "object",
            "required": [
                "daysInCycle",
                "startTime"
            ]
        },
        "gcp:compute/ResourcePolicySnapshotSchedulePolicyScheduleHourlySchedule:ResourcePolicySnapshotSchedulePolicyScheduleHourlySchedule": {
            "properties": {
                "hoursInCycle": {
                    "type": "integer",
                    "description": "The number of hours between snapshots.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Time within the window to start the operations.\nIt must be in an hourly format \"HH:MM\",\nwhere HH : [00-23] and MM : [00] GMT. eg: 21:00\n"
                }
            },
            "type": "object",
            "required": [
                "hoursInCycle",
                "startTime"
            ]
        },
        "gcp:compute/ResourcePolicySnapshotSchedulePolicyScheduleWeeklySchedule:ResourcePolicySnapshotSchedulePolicyScheduleWeeklySchedule": {
            "properties": {
                "dayOfWeeks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/ResourcePolicySnapshotSchedulePolicyScheduleWeeklyScheduleDayOfWeek:ResourcePolicySnapshotSchedulePolicyScheduleWeeklyScheduleDayOfWeek"
                    },
                    "description": "May contain up to seven (one for each day of the week) snapshot times.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "dayOfWeeks"
            ]
        },
        "gcp:compute/ResourcePolicySnapshotSchedulePolicyScheduleWeeklyScheduleDayOfWeek:ResourcePolicySnapshotSchedulePolicyScheduleWeeklyScheduleDayOfWeek": {
            "properties": {
                "day": {
                    "type": "string",
                    "description": "The day of the week to create the snapshot. e.g. MONDAY\nPossible values are: `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "Time within the window to start the operations.\nIt must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT.\n"
                }
            },
            "type": "object",
            "required": [
                "day",
                "startTime"
            ]
        },
        "gcp:compute/ResourcePolicySnapshotSchedulePolicySnapshotProperties:ResourcePolicySnapshotSchedulePolicySnapshotProperties": {
            "properties": {
                "chainName": {
                    "type": "string",
                    "description": "Creates the new snapshot in the snapshot chain labeled with the\nspecified name. The chain name must be 1-63 characters long and comply\nwith RFC1035.\n"
                },
                "guestFlush": {
                    "type": "boolean",
                    "description": "Whether to perform a 'guest aware' snapshot.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of key-value pairs.\n"
                },
                "storageLocations": {
                    "type": "string",
                    "description": "Cloud Storage bucket location to store the auto snapshot\n(regional or multi-regional)\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/ResourcePolicyWorkloadPolicy:ResourcePolicyWorkloadPolicy": {
            "properties": {
                "acceleratorTopology": {
                    "type": "string",
                    "description": "The accelerator topology. This field can be set only when the workload policy type is HIGH_THROUGHPUT\nand cannot be set if max topology distance is set.\n",
                    "willReplaceOnChanges": true
                },
                "acceleratorTopologyMode": {
                    "type": "string",
                    "description": "(Optional, Beta)\nSpecifies the connection mode for the accelerator topology.\nSupported values are:\n* `AUTO_CONNECT`: The interconnected chips are pre-configured at the time of VM creation.\n* `PROVISION_ONLY`: The interconnected chips are connected on demand. At the time of VM creation, the chips are not connected.\nIf not specified, the default is AUTO_CONNECT.\nThis field can be set only when the workload policy type is HIGH_THROUGHPUT and cannot be set if max topology distance is set.\nPossible values are: `AUTO_CONNECT`, `PROVISION_ONLY`.\n",
                    "willReplaceOnChanges": true
                },
                "maxTopologyDistance": {
                    "type": "string",
                    "description": "The maximum topology distance. This field can be set only when the workload policy type is HIGH_THROUGHPUT\nand cannot be set if accelerator topology or accelerator topology mode is set.\nPossible values are: `BLOCK`, `CLUSTER`, `SUBBLOCK`.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of workload policy.\nPossible values are: `HIGH_AVAILABILITY`, `HIGH_THROUGHPUT`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/RolloutPlanWave:RolloutPlanWave": {
            "properties": {
                "displayName": {
                    "type": "string",
                    "description": "The display name of this wave of the rollout plan.\n",
                    "willReplaceOnChanges": true
                },
                "number": {
                    "type": "integer",
                    "description": "(Output)\nThe wave number.\n"
                },
                "orchestrationOptions": {
                    "$ref": "#/types/gcp:compute/RolloutPlanWaveOrchestrationOptions:RolloutPlanWaveOrchestrationOptions",
                    "description": "Options to control the pace of orchestration of a wave.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "selectors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RolloutPlanWaveSelector:RolloutPlanWaveSelector"
                    },
                    "description": "The selectors for this wave. There is a logical AND between each selector\ndefined in a wave, so a resource must satisfy the criteria of *all* the\nspecified selectors to be in scope for the wave.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "validation": {
                    "$ref": "#/types/gcp:compute/RolloutPlanWaveValidation:RolloutPlanWaveValidation",
                    "description": "The validation to be performed before progressing to the next wave.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "selectors",
                "validation"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "number",
                        "selectors",
                        "validation"
                    ]
                }
            }
        },
        "gcp:compute/RolloutPlanWaveOrchestrationOptions:RolloutPlanWaveOrchestrationOptions": {
            "properties": {
                "delays": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RolloutPlanWaveOrchestrationOptionsDelay:RolloutPlanWaveOrchestrationOptionsDelay"
                    },
                    "description": "Delays, if any, to be added between batches of projects.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "maxConcurrentLocations": {
                    "type": "integer",
                    "description": "Maximum number of locations to be orchestrated in parallel.\n",
                    "willReplaceOnChanges": true
                },
                "maxConcurrentResourcesPerLocation": {
                    "type": "integer",
                    "description": "Maximum number of resources to be orchestrated per location in parallel.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RolloutPlanWaveOrchestrationOptionsDelay:RolloutPlanWaveOrchestrationOptionsDelay": {
            "properties": {
                "delimiter": {
                    "type": "string",
                    "description": "Controls whether the delay should only be added between batches of projects corresponding to different locations, or also between batches of projects corresponding to the same location.\nPossible values are: `DELIMITER_UNSPECIFIED`, `DELIMITER_LOCATION`, `DELIMITER_BATCH`.\n",
                    "willReplaceOnChanges": true
                },
                "duration": {
                    "type": "string",
                    "description": "The duration of the delay, if any, to be added between batches of projects.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "Controls whether the specified duration is to be added at the end of each batch, or if the total processing time for each batch will be padded if needed to meet the specified duration.\nPossible values are: `TYPE_UNSPECIFIED`, `TYPE_OFFSET`, `TYPE_MINIMUM`.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RolloutPlanWaveSelector:RolloutPlanWaveSelector": {
            "properties": {
                "locationSelector": {
                    "$ref": "#/types/gcp:compute/RolloutPlanWaveSelectorLocationSelector:RolloutPlanWaveSelectorLocationSelector",
                    "description": "Roll out to resources by location.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "resourceHierarchySelector": {
                    "$ref": "#/types/gcp:compute/RolloutPlanWaveSelectorResourceHierarchySelector:RolloutPlanWaveSelectorResourceHierarchySelector",
                    "description": "Roll out to resources by Cloud Resource Manager resource hierarchy nodes such as projects, folders, orgs.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RolloutPlanWaveSelectorLocationSelector:RolloutPlanWaveSelectorLocationSelector": {
            "properties": {
                "includedLocations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Example: \"us-central1-a\"\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RolloutPlanWaveSelectorResourceHierarchySelector:RolloutPlanWaveSelectorResourceHierarchySelector": {
            "properties": {
                "includedFolders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Format: \"folders/{folder_id}\"\n",
                    "willReplaceOnChanges": true
                },
                "includedOrganizations": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Format: \"organizations/{organization_id}\"\n",
                    "willReplaceOnChanges": true
                },
                "includedProjects": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Format: \"projects/{project_id}\"\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RolloutPlanWaveValidation:RolloutPlanWaveValidation": {
            "properties": {
                "timeBasedValidationMetadata": {
                    "$ref": "#/types/gcp:compute/RolloutPlanWaveValidationTimeBasedValidationMetadata:RolloutPlanWaveValidationTimeBasedValidationMetadata",
                    "description": "Metadata required if type = \"time\".\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The type of the validation. Possible values:\n\"manual\": The system waits for an end-user approval API before progressing to the next wave.\n\"time\": The system waits for a user specified duration before progressing to the next wave.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/RolloutPlanWaveValidationTimeBasedValidationMetadata:RolloutPlanWaveValidationTimeBasedValidationMetadata": {
            "properties": {
                "waitDuration": {
                    "type": "string",
                    "description": "The duration that the system waits in between waves. This wait starts\nafter all changes in the wave are rolled out.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RouteAsPath:RouteAsPath": {
            "properties": {
                "asLists": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "(Output)\nThe AS numbers of the AS Path.\n"
                },
                "pathSegmentType": {
                    "type": "string",
                    "description": "(Output)\nThe type of the AS Path, which can be one of the following values:\n- 'AS_SET': unordered set of autonomous systems that the route in has traversed\n- 'AS_SEQUENCE': ordered set of autonomous systems that the route has traversed\n- 'AS_CONFED_SEQUENCE': ordered set of Member Autonomous Systems in the local confederation that the route has traversed\n- 'AS_CONFED_SET': unordered set of Member Autonomous Systems in the local confederation that the route has traversed\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "asLists",
                        "pathSegmentType"
                    ]
                }
            }
        },
        "gcp:compute/RouteParams:RouteParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the route. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456. The field is ignored when empty.\nThe field is immutable and causes resource replacement when mutated. This field is only\nset at create time and modifying this field after creation will trigger recreation.\nTo apply tags to an existing resource, see the\u003cspan pulumi-lang-nodejs=\" gcp.tags.TagBinding \" pulumi-lang-dotnet=\" gcp.tags.TagBinding \" pulumi-lang-go=\" tags.TagBinding \" pulumi-lang-python=\" tags.TagBinding \" pulumi-lang-yaml=\" gcp.tags.TagBinding \" pulumi-lang-java=\" gcp.tags.TagBinding \" pulumi-lang-hcl=\" google_tags_tag_binding \"\u003e gcp.tags.TagBinding \u003c/span\u003eresource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/RouteWarning:RouteWarning": {
            "properties": {
                "code": {
                    "type": "string",
                    "description": "(Output)\nA warning code, if applicable. For example, Compute Engine returns\nNO_RESULTS_ON_PAGE if there are no results in the response.\n"
                },
                "datas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouteWarningData:RouteWarningData"
                    },
                    "description": "(Output)\nMetadata about this warning in key: value format. For example:\n\"data\":   {  \"key\": \"scope\",  \"value\": \"zones/us-east1-d\"  }\nStructure is [documented below.\n"
                },
                "message": {
                    "type": "string",
                    "description": "(Output)\nA human-readable description of the warning code.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "code",
                        "datas",
                        "message"
                    ]
                }
            }
        },
        "gcp:compute/RouteWarningData:RouteWarningData": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "(Output)\nA key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).\n"
                },
                "value": {
                    "type": "string",
                    "description": "(Output)\nA warning data value corresponding to the key.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "key",
                        "value"
                    ]
                }
            }
        },
        "gcp:compute/RouterBgp:RouterBgp": {
            "properties": {
                "advertiseMode": {
                    "type": "string",
                    "description": "User-specified flag to indicate which mode to use for advertisement.\nDefault value is `DEFAULT`.\nPossible values are: `DEFAULT`, `CUSTOM`.\n"
                },
                "advertisedGroups": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "User-specified list of prefix groups to advertise in custom mode.\nThis field can only be populated if advertiseMode is CUSTOM and\nis advertised to all peers of the router. These groups will be\nadvertised in addition to any specified prefixes. Leave this field\nblank to advertise no custom groups.\nThis enum field has the one valid value: ALL_SUBNETS\n"
                },
                "advertisedIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterBgpAdvertisedIpRange:RouterBgpAdvertisedIpRange"
                    },
                    "description": "User-specified list of individual IP ranges to advertise in\ncustom mode. This field can only be populated if advertiseMode\nis CUSTOM and is advertised to all peers of the router. These IP\nranges will be advertised in addition to any specified groups.\nLeave this field blank to advertise no custom IP ranges.\nStructure is documented below.\n"
                },
                "asn": {
                    "type": "integer",
                    "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996\nprivate ASN, either 16-bit or 32-bit. The value will be fixed for\nthis router resource. All VPN tunnels that link to this router\nwill have the same local ASN.\n"
                },
                "identifierRange": {
                    "type": "string",
                    "description": "Explicitly specifies a range of valid BGP Identifiers for this Router.\nIt is provided as a link-local IPv4 range (from 169.254.0.0/16), of\nsize at least /30, even if the BGP sessions are over IPv6. It must\nnot overlap with any IPv4 BGP session ranges. Other vendors commonly\ncall this router ID.\n"
                },
                "keepaliveInterval": {
                    "type": "integer",
                    "description": "The interval in seconds between BGP keepalive messages that are sent\nto the peer. Hold time is three times the interval at which keepalive\nmessages are sent, and the hold time is the maximum number of seconds\nallowed to elapse between successive keepalive messages that BGP\nreceives from a peer.\nBGP will use the smaller of either the local hold time value or the\npeer's hold time value as the hold time for the BGP connection\nbetween the two peers. If set, this value must be between 20 and 60.\nThe default is 20.\n"
                }
            },
            "type": "object",
            "required": [
                "asn"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "asn",
                        "identifierRange"
                    ]
                }
            }
        },
        "gcp:compute/RouterBgpAdvertisedIpRange:RouterBgpAdvertisedIpRange": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "User-specified description for the IP range.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedMd5AuthenticationKeys\"\" pulumi-lang-dotnet=\"\"NestedMd5AuthenticationKeys\"\" pulumi-lang-go=\"\"nestedMd5AuthenticationKeys\"\" pulumi-lang-python=\"\"nested_md5_authentication_keys\"\" pulumi-lang-yaml=\"\"nestedMd5AuthenticationKeys\"\" pulumi-lang-java=\"\"nestedMd5AuthenticationKeys\"\" pulumi-lang-hcl=\"\"nested_md5_authentication_keys\"\"\u003e\"nestedMd5AuthenticationKeys\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`md5AuthenticationKeys`\" pulumi-lang-dotnet=\"`Md5AuthenticationKeys`\" pulumi-lang-go=\"`md5AuthenticationKeys`\" pulumi-lang-python=\"`md5_authentication_keys`\" pulumi-lang-yaml=\"`md5AuthenticationKeys`\" pulumi-lang-java=\"`md5AuthenticationKeys`\" pulumi-lang-hcl=\"`md5_authentication_keys`\"\u003e`md5AuthenticationKeys`\u003c/span\u003e block supports:\n"
                },
                "range": {
                    "type": "string",
                    "description": "The IP range to advertise. The value must be a\nCIDR-formatted string.\n"
                }
            },
            "type": "object",
            "required": [
                "range"
            ]
        },
        "gcp:compute/RouterMd5AuthenticationKeys:RouterMd5AuthenticationKeys": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Value of the key used for MD5 authentication.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the resource. The name must be 1-63 characters long, and\ncomply with RFC1035. Specifically, the name must be 1-63 characters\nlong and match the regular expression `a-z?`\nwhich means the first character must be a lowercase letter, and all\nfollowing characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "name"
            ]
        },
        "gcp:compute/RouterNamedSetElement:RouterNamedSetElement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression.\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:compute/RouterNatLogConfig:RouterNatLogConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "Indicates whether or not to export logs.\n"
                },
                "filter": {
                    "type": "string",
                    "description": "Specifies the desired filtering of logs on this NAT.\nPossible values are: `ERRORS_ONLY`, `TRANSLATIONS_ONLY`, `ALL`.\n"
                }
            },
            "type": "object",
            "required": [
                "enable",
                "filter"
            ]
        },
        "gcp:compute/RouterNatNat64Subnetwork:RouterNatNat64Subnetwork": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of the NAT service. The name must be 1-63 characters long and\ncomply with RFC1035.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/RouterNatRule:RouterNatRule": {
            "properties": {
                "action": {
                    "$ref": "#/types/gcp:compute/RouterNatRuleAction:RouterNatRuleAction",
                    "description": "The action to be enforced for traffic that matches this rule.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this rule.\n"
                },
                "match": {
                    "type": "string",
                    "description": "CEL expression that specifies the match condition that egress traffic from a VM is evaluated against.\nIf it evaluates to true, the corresponding action is enforced.\nThe following examples are valid match expressions for public NAT:\n\"inIpRange(destination.ip, '1.1.0.0/16') || inIpRange(destination.ip, '2.2.0.0/16')\"\n\"destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'\"\nThe following example is a valid match expression for private NAT:\n\"nexthop.hub == 'https://networkconnectivity.googleapis.com/v1alpha1/projects/my-project/global/hub/hub-1'\"\n"
                },
                "ruleNumber": {
                    "type": "integer",
                    "description": "An integer uniquely identifying a rule in the list.\nThe rule number must be a positive value between 0 and 65000, and must be unique among rules within a NAT.\n"
                }
            },
            "type": "object",
            "required": [
                "match",
                "ruleNumber"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "match",
                        "ruleNumber"
                    ]
                }
            }
        },
        "gcp:compute/RouterNatRuleAction:RouterNatRuleAction": {
            "properties": {
                "sourceNatActiveIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of URLs of the IP resources used for this NAT rule.\nThese IP addresses must be valid static external IP addresses assigned to the project.\nThis field is used for public NAT.\n"
                },
                "sourceNatActiveRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of URLs of the subnetworks used as source ranges for this NAT Rule.\nThese subnetworks must have purpose set to PRIVATE_NAT.\nThis field is used for private NAT.\n"
                },
                "sourceNatDrainIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of URLs of the IP resources to be drained.\nThese IPs must be valid static external IPs that have been assigned to the NAT.\nThese IPs should be used for updating/patching a NAT rule only.\nThis field is used for public NAT.\n"
                },
                "sourceNatDrainRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of URLs of subnetworks representing source ranges to be drained.\nThis is only supported on patch/update, and these subnetworks must have previously been used as active ranges in this NAT Rule.\nThis field is used for private NAT.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RouterNatSubnetwork:RouterNatSubnetwork": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Self-link of the subnetwork resource that will use NAT64\n"
                },
                "secondaryIpRangeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of the secondary ranges of the subnetwork that are allowed\nto use NAT. This can be populated only if\n`LIST_OF_SECONDARY_IP_RANGES` is one of the values in\nsourceIpRangesToNat\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedNat64Subnetwork\"\" pulumi-lang-dotnet=\"\"NestedNat64Subnetwork\"\" pulumi-lang-go=\"\"nestedNat64Subnetwork\"\" pulumi-lang-python=\"\"nested_nat64_subnetwork\"\" pulumi-lang-yaml=\"\"nestedNat64Subnetwork\"\" pulumi-lang-java=\"\"nestedNat64Subnetwork\"\" pulumi-lang-hcl=\"\"nested_nat64_subnetwork\"\"\u003e\"nestedNat64Subnetwork\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`nat64Subnetwork`\" pulumi-lang-dotnet=\"`Nat64Subnetwork`\" pulumi-lang-go=\"`nat64Subnetwork`\" pulumi-lang-python=\"`nat64_subnetwork`\" pulumi-lang-yaml=\"`nat64Subnetwork`\" pulumi-lang-java=\"`nat64Subnetwork`\" pulumi-lang-hcl=\"`nat64_subnetwork`\"\u003e`nat64Subnetwork`\u003c/span\u003e block supports:\n"
                },
                "sourceIpRangesToNats": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of options for which source IPs in the subnetwork\nshould have NAT enabled. Supported values include:\n`ALL_IP_RANGES`, `LIST_OF_SECONDARY_IP_RANGES`,\n`PRIMARY_IP_RANGE`.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "sourceIpRangesToNats"
            ]
        },
        "gcp:compute/RouterParams:RouterParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the router. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/RouterPeerAdvertisedIpRange:RouterPeerAdvertisedIpRange": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "User-specified description for the IP range.\n"
                },
                "range": {
                    "type": "string",
                    "description": "The IP range to advertise. The value must be a\nCIDR-formatted string.\n"
                }
            },
            "type": "object",
            "required": [
                "range"
            ]
        },
        "gcp:compute/RouterPeerBfd:RouterPeerBfd": {
            "properties": {
                "minReceiveInterval": {
                    "type": "integer",
                    "description": "The minimum interval, in milliseconds, between BFD control packets\nreceived from the peer router. The actual value is negotiated\nbetween the two routers and is equal to the greater of this value\nand the transmit interval of the other router. If set, this value\nmust be between 1000 and 30000.\n"
                },
                "minTransmitInterval": {
                    "type": "integer",
                    "description": "The minimum interval, in milliseconds, between BFD control packets\ntransmitted to the peer router. The actual value is negotiated\nbetween the two routers and is equal to the greater of this value\nand the corresponding receive interval of the other router. If set,\nthis value must be between 1000 and 30000.\n"
                },
                "multiplier": {
                    "type": "integer",
                    "description": "The number of consecutive BFD packets that must be missed before\nBFD declares that a peer is unavailable. If set, the value must\nbe a value between 5 and 16.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedMd5AuthenticationKey\"\" pulumi-lang-dotnet=\"\"NestedMd5AuthenticationKey\"\" pulumi-lang-go=\"\"nestedMd5AuthenticationKey\"\" pulumi-lang-python=\"\"nested_md5_authentication_key\"\" pulumi-lang-yaml=\"\"nestedMd5AuthenticationKey\"\" pulumi-lang-java=\"\"nestedMd5AuthenticationKey\"\" pulumi-lang-hcl=\"\"nested_md5_authentication_key\"\"\u003e\"nestedMd5AuthenticationKey\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`md5AuthenticationKey`\" pulumi-lang-dotnet=\"`Md5AuthenticationKey`\" pulumi-lang-go=\"`md5AuthenticationKey`\" pulumi-lang-python=\"`md5_authentication_key`\" pulumi-lang-yaml=\"`md5AuthenticationKey`\" pulumi-lang-java=\"`md5AuthenticationKey`\" pulumi-lang-hcl=\"`md5_authentication_key`\"\u003e`md5AuthenticationKey`\u003c/span\u003e block supports:\n"
                },
                "sessionInitializationMode": {
                    "type": "string",
                    "description": "The BFD session initialization mode for this BGP peer.\nIf set to `ACTIVE`, the Cloud Router will initiate the BFD session\nfor this BGP peer. If set to `PASSIVE`, the Cloud Router will wait\nfor the peer router to initiate the BFD session for this BGP peer.\nIf set to `DISABLED`, BFD is disabled for this BGP peer.\nPossible values are: `ACTIVE`, `DISABLED`, `PASSIVE`.\n"
                }
            },
            "type": "object",
            "required": [
                "sessionInitializationMode"
            ]
        },
        "gcp:compute/RouterPeerCustomLearnedIpRange:RouterPeerCustomLearnedIpRange": {
            "properties": {
                "range": {
                    "type": "string",
                    "description": "The IP range to learn. The value must be a\nCIDR-formatted string.\n"
                }
            },
            "type": "object",
            "required": [
                "range"
            ]
        },
        "gcp:compute/RouterPeerMd5AuthenticationKey:RouterPeerMd5AuthenticationKey": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Value of the key.\n",
                    "secret": true
                },
                "name": {
                    "type": "string",
                    "description": "Name of this BGP peer. The name must be 1-63 characters long,\nand comply with RFC1035. Specifically, the name must be 1-63 characters\nlong and match the regular expression `a-z?` which\nmeans the first character must be a lowercase letter, and all\nfollowing characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "name"
            ]
        },
        "gcp:compute/RouterRoutePolicyTerm:RouterRoutePolicyTerm": {
            "properties": {
                "actions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterRoutePolicyTermAction:RouterRoutePolicyTermAction"
                    },
                    "description": "'CEL expressions to evaluate to modify a route when this term matches.'\\\nStructure is documented below.\n"
                },
                "match": {
                    "$ref": "#/types/gcp:compute/RouterRoutePolicyTermMatch:RouterRoutePolicyTermMatch",
                    "description": "CEL expression evaluated against a route to determine if this term applies (see Policy Language).\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The evaluation priority for this term, which must be between 0 (inclusive) and 2147483648 (exclusive), and unique within the list.\n"
                }
            },
            "type": "object",
            "required": [
                "match",
                "priority"
            ]
        },
        "gcp:compute/RouterRoutePolicyTermAction:RouterRoutePolicyTermAction": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression\nLanguage syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its\npurpose.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:compute/RouterRoutePolicyTermMatch:RouterRoutePolicyTermMatch": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the expression\n"
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n"
                },
                "location": {
                    "type": "string",
                    "description": "String indicating the location of the expression for error reporting, e.g. a file name and a position in the file\n"
                },
                "title": {
                    "type": "string",
                    "description": "Title for the expression, i.e. a short string describing its purpose.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:compute/RouterStatusBestRoute:RouterStatusBestRoute": {
            "properties": {
                "asPaths": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterStatusBestRouteAsPath:RouterStatusBestRouteAsPath"
                    }
                },
                "creationTimestamp": {
                    "type": "string",
                    "description": "Creation timestamp in RFC3339 text format.\n"
                },
                "deletionPolicy": {
                    "type": "string",
                    "description": "Whether Terraform will be prevented from destroying the instance. Defaults to \"DELETE\".\nWhen a 'terraform destroy' or 'terraform apply' would delete the instance,\nthe command will fail if this field is set to \"PREVENT\" in Terraform state.\nWhen set to \"ABANDON\", the command will remove the resource from Terraform\nmanagement without updating or deleting the resource in the API.\nWhen set to \"DELETE\", deleting the resource is allowed.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource. Provide this property\nwhen you create the resource.\n"
                },
                "destRange": {
                    "type": "string",
                    "description": "The destination range of outgoing packets that this route applies to.\nOnly IPv4 is supported.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the router.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The network name or resource link to the parent\nnetwork of this subnetwork.\n"
                },
                "nextHopGateway": {
                    "type": "string",
                    "description": "URL to a gateway that should handle matching packets.\nCurrently, you can only specify the internet gateway, using a full or\npartial valid URL:\n* 'https://www.googleapis.com/compute/v1/projects/project/global/gateways/default-internet-gateway'\n* 'projects/project/global/gateways/default-internet-gateway'\n* 'global/gateways/default-internet-gateway'\n* The string 'default-internet-gateway'.\n"
                },
                "nextHopHub": {
                    "type": "string",
                    "description": "The hub network that should handle matching packets, which should conform to RFC1035.\n"
                },
                "nextHopIlb": {
                    "type": "string",
                    "description": "The IP address or URL to a forwarding rule of type\nloadBalancingScheme=INTERNAL that should handle matching\npackets.\n\nWith the GA provider you can only specify the forwarding\nrule as a partial or full URL. For example, the following\nare all valid values:\n* 10.128.0.56\n* https://www.googleapis.com/compute/v1/projects/project/regions/region/forwardingRules/forwardingRule\n* regions/region/forwardingRules/forwardingRule\n\nWhen the beta provider, you can also specify the IP address\nof a forwarding rule from the same VPC or any peered VPC.\n\nNote that this can only be used when the destinationRange is\na public (non-RFC 1918) IP CIDR range.\n"
                },
                "nextHopInstance": {
                    "type": "string",
                    "description": "URL to an instance that should handle matching packets.\nYou can specify this as a full or partial URL. For example:\n* 'https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance'\n* 'projects/project/zones/zone/instances/instance'\n* 'zones/zone/instances/instance'\n* Just the instance name, with the zone in 'next_hop_instance_zone'.\n"
                },
                "nextHopInstanceZone": {
                    "type": "string",
                    "description": "The zone of the instance specified in next_hop_instance. Omit if\u003cspan pulumi-lang-nodejs=\" nextHopInstance \" pulumi-lang-dotnet=\" NextHopInstance \" pulumi-lang-go=\" nextHopInstance \" pulumi-lang-python=\" next_hop_instance \" pulumi-lang-yaml=\" nextHopInstance \" pulumi-lang-java=\" nextHopInstance \" pulumi-lang-hcl=\" next_hop_instance \"\u003e nextHopInstance \u003c/span\u003eis specified as a URL.\n"
                },
                "nextHopInterRegionCost": {
                    "type": "string",
                    "description": "Internal fixed region-to-region cost that Google Cloud calculates based on factors such as network performance, distance, and available bandwidth between regions.\n"
                },
                "nextHopIp": {
                    "type": "string",
                    "description": "Network IP address of an instance that should handle matching packets.\n"
                },
                "nextHopMed": {
                    "type": "string",
                    "description": "Multi-Exit Discriminator, a BGP route metric that indicates the desirability of a particular route in a network.\n"
                },
                "nextHopNetwork": {
                    "type": "string",
                    "description": "URL to a Network that should handle matching packets.\n"
                },
                "nextHopOrigin": {
                    "type": "string",
                    "description": "Indicates the origin of the route. Can be IGP (Interior Gateway Protocol), EGP (Exterior Gateway Protocol), or INCOMPLETE.\n"
                },
                "nextHopPeering": {
                    "type": "string",
                    "description": "The network peering name that should handle matching packets, which should conform to RFC1035.\n"
                },
                "nextHopVpnTunnel": {
                    "type": "string",
                    "description": "URL to a VpnTunnel that should handle matching packets.\n"
                },
                "params": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterStatusBestRouteParam:RouterStatusBestRouteParam"
                    },
                    "description": "Additional params passed with the request, but not persisted as part of resource payload\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of this route. Priority is used to break ties in cases\nwhere there is more than one matching route of equal prefix length.\n\nIn the case of two routes with equal prefix length, the one with the\nlowest-numbered priority value wins.\n\nDefault value is 1000. Valid range is 0 through 65535.\n"
                },
                "project": {
                    "type": "string",
                    "description": "The ID of the project in which the resource\nbelongs. If it is not provided, the provider project is used.\n"
                },
                "routeStatus": {
                    "type": "string",
                    "description": "The status of the route, which can be one of the following values:\n- 'ACTIVE' for an active route\n- 'INACTIVE' for an inactive route\n"
                },
                "routeType": {
                    "type": "string",
                    "description": "The type of this route, which can be one of the following values:\n- 'TRANSIT' for a transit route that this router learned from another Cloud Router and will readvertise to one of its BGP peers\n- 'SUBNET' for a route from a subnet of the VPC\n- 'BGP' for a route learned from a BGP peer of this router\n- 'STATIC' for a static route\n"
                },
                "selfLink": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of instance tags to which this route applies.\n"
                },
                "warnings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterStatusBestRouteWarning:RouterStatusBestRouteWarning"
                    },
                    "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages.\n"
                }
            },
            "type": "object",
            "required": [
                "asPaths",
                "creationTimestamp",
                "deletionPolicy",
                "description",
                "destRange",
                "name",
                "network",
                "nextHopGateway",
                "nextHopHub",
                "nextHopIlb",
                "nextHopInstance",
                "nextHopInstanceZone",
                "nextHopInterRegionCost",
                "nextHopIp",
                "nextHopMed",
                "nextHopNetwork",
                "nextHopOrigin",
                "nextHopPeering",
                "nextHopVpnTunnel",
                "params",
                "priority",
                "project",
                "routeStatus",
                "routeType",
                "selfLink",
                "tags",
                "warnings"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRouteAsPath:RouterStatusBestRouteAsPath": {
            "properties": {
                "asLists": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "The AS numbers of the AS Path.\n"
                },
                "pathSegmentType": {
                    "type": "string",
                    "description": "The type of the AS Path, which can be one of the following values:\n- 'AS_SET': unordered set of autonomous systems that the route in has traversed\n- 'AS_SEQUENCE': ordered set of autonomous systems that the route has traversed\n- 'AS_CONFED_SEQUENCE': ordered set of Member Autonomous Systems in the local confederation that the route has traversed\n- 'AS_CONFED_SET': unordered set of Member Autonomous Systems in the local confederation that the route has traversed\n"
                }
            },
            "type": "object",
            "required": [
                "asLists",
                "pathSegmentType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRouteParam:RouterStatusBestRouteParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the route. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456. The field is ignored when empty.\nThe field is immutable and causes resource replacement when mutated. This field is only\nset at create time and modifying this field after creation will trigger recreation.\nTo apply tags to an existing resource, see the\u003cspan pulumi-lang-nodejs=\" gcp.tags.TagBinding \" pulumi-lang-dotnet=\" gcp.tags.TagBinding \" pulumi-lang-go=\" tags.TagBinding \" pulumi-lang-python=\" tags.TagBinding \" pulumi-lang-yaml=\" gcp.tags.TagBinding \" pulumi-lang-java=\" gcp.tags.TagBinding \" pulumi-lang-hcl=\" google_tags_tag_binding \"\u003e gcp.tags.TagBinding \u003c/span\u003eresource.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRouteWarning:RouterStatusBestRouteWarning": {
            "properties": {
                "code": {
                    "type": "string",
                    "description": "A warning code, if applicable. For example, Compute Engine returns\nNO_RESULTS_ON_PAGE if there are no results in the response.\n"
                },
                "datas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterStatusBestRouteWarningData:RouterStatusBestRouteWarningData"
                    },
                    "description": "Metadata about this warning in key: value format. For example:\n\"data\": [  {  \"key\": \"scope\",  \"value\": \"zones/us-east1-d\"  }\n"
                },
                "message": {
                    "type": "string",
                    "description": "A human-readable description of the warning code.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "datas",
                "message"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRouteWarningData:RouterStatusBestRouteWarningData": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).\n"
                },
                "value": {
                    "type": "string",
                    "description": "A warning data value corresponding to the key.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRoutesForRouter:RouterStatusBestRoutesForRouter": {
            "properties": {
                "asPaths": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterStatusBestRoutesForRouterAsPath:RouterStatusBestRoutesForRouterAsPath"
                    }
                },
                "creationTimestamp": {
                    "type": "string",
                    "description": "Creation timestamp in RFC3339 text format.\n"
                },
                "deletionPolicy": {
                    "type": "string",
                    "description": "Whether Terraform will be prevented from destroying the instance. Defaults to \"DELETE\".\nWhen a 'terraform destroy' or 'terraform apply' would delete the instance,\nthe command will fail if this field is set to \"PREVENT\" in Terraform state.\nWhen set to \"ABANDON\", the command will remove the resource from Terraform\nmanagement without updating or deleting the resource in the API.\nWhen set to \"DELETE\", deleting the resource is allowed.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource. Provide this property\nwhen you create the resource.\n"
                },
                "destRange": {
                    "type": "string",
                    "description": "The destination range of outgoing packets that this route applies to.\nOnly IPv4 is supported.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the router.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The network name or resource link to the parent\nnetwork of this subnetwork.\n"
                },
                "nextHopGateway": {
                    "type": "string",
                    "description": "URL to a gateway that should handle matching packets.\nCurrently, you can only specify the internet gateway, using a full or\npartial valid URL:\n* 'https://www.googleapis.com/compute/v1/projects/project/global/gateways/default-internet-gateway'\n* 'projects/project/global/gateways/default-internet-gateway'\n* 'global/gateways/default-internet-gateway'\n* The string 'default-internet-gateway'.\n"
                },
                "nextHopHub": {
                    "type": "string",
                    "description": "The hub network that should handle matching packets, which should conform to RFC1035.\n"
                },
                "nextHopIlb": {
                    "type": "string",
                    "description": "The IP address or URL to a forwarding rule of type\nloadBalancingScheme=INTERNAL that should handle matching\npackets.\n\nWith the GA provider you can only specify the forwarding\nrule as a partial or full URL. For example, the following\nare all valid values:\n* 10.128.0.56\n* https://www.googleapis.com/compute/v1/projects/project/regions/region/forwardingRules/forwardingRule\n* regions/region/forwardingRules/forwardingRule\n\nWhen the beta provider, you can also specify the IP address\nof a forwarding rule from the same VPC or any peered VPC.\n\nNote that this can only be used when the destinationRange is\na public (non-RFC 1918) IP CIDR range.\n"
                },
                "nextHopInstance": {
                    "type": "string",
                    "description": "URL to an instance that should handle matching packets.\nYou can specify this as a full or partial URL. For example:\n* 'https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance'\n* 'projects/project/zones/zone/instances/instance'\n* 'zones/zone/instances/instance'\n* Just the instance name, with the zone in 'next_hop_instance_zone'.\n"
                },
                "nextHopInstanceZone": {
                    "type": "string",
                    "description": "The zone of the instance specified in next_hop_instance. Omit if\u003cspan pulumi-lang-nodejs=\" nextHopInstance \" pulumi-lang-dotnet=\" NextHopInstance \" pulumi-lang-go=\" nextHopInstance \" pulumi-lang-python=\" next_hop_instance \" pulumi-lang-yaml=\" nextHopInstance \" pulumi-lang-java=\" nextHopInstance \" pulumi-lang-hcl=\" next_hop_instance \"\u003e nextHopInstance \u003c/span\u003eis specified as a URL.\n"
                },
                "nextHopInterRegionCost": {
                    "type": "string",
                    "description": "Internal fixed region-to-region cost that Google Cloud calculates based on factors such as network performance, distance, and available bandwidth between regions.\n"
                },
                "nextHopIp": {
                    "type": "string",
                    "description": "Network IP address of an instance that should handle matching packets.\n"
                },
                "nextHopMed": {
                    "type": "string",
                    "description": "Multi-Exit Discriminator, a BGP route metric that indicates the desirability of a particular route in a network.\n"
                },
                "nextHopNetwork": {
                    "type": "string",
                    "description": "URL to a Network that should handle matching packets.\n"
                },
                "nextHopOrigin": {
                    "type": "string",
                    "description": "Indicates the origin of the route. Can be IGP (Interior Gateway Protocol), EGP (Exterior Gateway Protocol), or INCOMPLETE.\n"
                },
                "nextHopPeering": {
                    "type": "string",
                    "description": "The network peering name that should handle matching packets, which should conform to RFC1035.\n"
                },
                "nextHopVpnTunnel": {
                    "type": "string",
                    "description": "URL to a VpnTunnel that should handle matching packets.\n"
                },
                "params": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterStatusBestRoutesForRouterParam:RouterStatusBestRoutesForRouterParam"
                    },
                    "description": "Additional params passed with the request, but not persisted as part of resource payload\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of this route. Priority is used to break ties in cases\nwhere there is more than one matching route of equal prefix length.\n\nIn the case of two routes with equal prefix length, the one with the\nlowest-numbered priority value wins.\n\nDefault value is 1000. Valid range is 0 through 65535.\n"
                },
                "project": {
                    "type": "string",
                    "description": "The ID of the project in which the resource\nbelongs. If it is not provided, the provider project is used.\n"
                },
                "routeStatus": {
                    "type": "string",
                    "description": "The status of the route, which can be one of the following values:\n- 'ACTIVE' for an active route\n- 'INACTIVE' for an inactive route\n"
                },
                "routeType": {
                    "type": "string",
                    "description": "The type of this route, which can be one of the following values:\n- 'TRANSIT' for a transit route that this router learned from another Cloud Router and will readvertise to one of its BGP peers\n- 'SUBNET' for a route from a subnet of the VPC\n- 'BGP' for a route learned from a BGP peer of this router\n- 'STATIC' for a static route\n"
                },
                "selfLink": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of instance tags to which this route applies.\n"
                },
                "warnings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterStatusBestRoutesForRouterWarning:RouterStatusBestRoutesForRouterWarning"
                    },
                    "description": "If potential misconfigurations are detected for this route, this field will be populated with warning messages.\n"
                }
            },
            "type": "object",
            "required": [
                "asPaths",
                "creationTimestamp",
                "deletionPolicy",
                "description",
                "destRange",
                "name",
                "network",
                "nextHopGateway",
                "nextHopHub",
                "nextHopIlb",
                "nextHopInstance",
                "nextHopInstanceZone",
                "nextHopInterRegionCost",
                "nextHopIp",
                "nextHopMed",
                "nextHopNetwork",
                "nextHopOrigin",
                "nextHopPeering",
                "nextHopVpnTunnel",
                "params",
                "priority",
                "project",
                "routeStatus",
                "routeType",
                "selfLink",
                "tags",
                "warnings"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRoutesForRouterAsPath:RouterStatusBestRoutesForRouterAsPath": {
            "properties": {
                "asLists": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "The AS numbers of the AS Path.\n"
                },
                "pathSegmentType": {
                    "type": "string",
                    "description": "The type of the AS Path, which can be one of the following values:\n- 'AS_SET': unordered set of autonomous systems that the route in has traversed\n- 'AS_SEQUENCE': ordered set of autonomous systems that the route has traversed\n- 'AS_CONFED_SEQUENCE': ordered set of Member Autonomous Systems in the local confederation that the route has traversed\n- 'AS_CONFED_SET': unordered set of Member Autonomous Systems in the local confederation that the route has traversed\n"
                }
            },
            "type": "object",
            "required": [
                "asLists",
                "pathSegmentType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRoutesForRouterParam:RouterStatusBestRoutesForRouterParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the route. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456. The field is ignored when empty.\nThe field is immutable and causes resource replacement when mutated. This field is only\nset at create time and modifying this field after creation will trigger recreation.\nTo apply tags to an existing resource, see the\u003cspan pulumi-lang-nodejs=\" gcp.tags.TagBinding \" pulumi-lang-dotnet=\" gcp.tags.TagBinding \" pulumi-lang-go=\" tags.TagBinding \" pulumi-lang-python=\" tags.TagBinding \" pulumi-lang-yaml=\" gcp.tags.TagBinding \" pulumi-lang-java=\" gcp.tags.TagBinding \" pulumi-lang-hcl=\" google_tags_tag_binding \"\u003e gcp.tags.TagBinding \u003c/span\u003eresource.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRoutesForRouterWarning:RouterStatusBestRoutesForRouterWarning": {
            "properties": {
                "code": {
                    "type": "string",
                    "description": "A warning code, if applicable. For example, Compute Engine returns\nNO_RESULTS_ON_PAGE if there are no results in the response.\n"
                },
                "datas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/RouterStatusBestRoutesForRouterWarningData:RouterStatusBestRoutesForRouterWarningData"
                    },
                    "description": "Metadata about this warning in key: value format. For example:\n\"data\": [  {  \"key\": \"scope\",  \"value\": \"zones/us-east1-d\"  }\n"
                },
                "message": {
                    "type": "string",
                    "description": "A human-readable description of the warning code.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "datas",
                "message"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/RouterStatusBestRoutesForRouterWarningData:RouterStatusBestRoutesForRouterWarningData": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).\n"
                },
                "value": {
                    "type": "string",
                    "description": "A warning data value corresponding to the key.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/SecurityPolicyAdaptiveProtectionConfig:SecurityPolicyAdaptiveProtectionConfig": {
            "properties": {
                "autoDeployConfig": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig",
                    "description": ") Configuration for [Automatically deploy Adaptive Protection suggested rules](https://cloud.google.com/armor/docs/adaptive-protection-auto-deploy?hl=en). Structure is documented below.\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedLayer7DdosDefenseConfig\"\" pulumi-lang-dotnet=\"\"NestedLayer7DdosDefenseConfig\"\" pulumi-lang-go=\"\"nestedLayer7DdosDefenseConfig\"\" pulumi-lang-python=\"\"nested_layer_7_ddos_defense_config\"\" pulumi-lang-yaml=\"\"nestedLayer7DdosDefenseConfig\"\" pulumi-lang-java=\"\"nestedLayer7DdosDefenseConfig\"\" pulumi-lang-hcl=\"\"nested_layer_7_ddos_defense_config\"\"\u003e\"nestedLayer7DdosDefenseConfig\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`layer7DdosDefenseConfig`\" pulumi-lang-dotnet=\"`Layer7DdosDefenseConfig`\" pulumi-lang-go=\"`layer7DdosDefenseConfig`\" pulumi-lang-python=\"`layer_7_ddos_defense_config`\" pulumi-lang-yaml=\"`layer7DdosDefenseConfig`\" pulumi-lang-java=\"`layer7DdosDefenseConfig`\" pulumi-lang-hcl=\"`layer_7_ddos_defense_config`\"\u003e`layer7DdosDefenseConfig`\u003c/span\u003e block supports:\n"
                },
                "layer7DdosDefenseConfig": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig",
                    "description": "Configuration for [Google Cloud Armor Adaptive Protection Layer 7 DDoS Defense](https://cloud.google.com/armor/docs/adaptive-protection-overview?hl=en). Structure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig:SecurityPolicyAdaptiveProtectionConfigAutoDeployConfig": {
            "properties": {
                "confidenceThreshold": {
                    "type": "number",
                    "description": "Rules are only automatically deployed for alerts on potential attacks with confidence scores greater than this threshold.\n"
                },
                "expirationSec": {
                    "type": "integer",
                    "description": "Google Cloud Armor stops applying the action in the automatically deployed rule to an identified attacker after this duration. The rule continues to operate against new requests.\n"
                },
                "impactedBaselineThreshold": {
                    "type": "number",
                    "description": "Rules are only automatically deployed when the estimated impact to baseline traffic from the suggested mitigation is below this threshold.\n"
                },
                "loadThreshold": {
                    "type": "number",
                    "description": "Identifies new attackers only when the load to the backend service that is under attack exceeds this threshold.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "If set to true, enables CAAP for L7 DDoS detection.\n"
                },
                "ruleVisibility": {
                    "type": "string",
                    "description": "Rule visibility. Supported values include: \"STANDARD\", \"PREMIUM\".\n"
                },
                "thresholdConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig"
                    },
                    "description": "Configuration options for layer7 adaptive protection for various customizable thresholds.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ruleVisibility"
                    ]
                }
            }
        },
        "gcp:compute/SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfig": {
            "properties": {
                "autoDeployConfidenceThreshold": {
                    "type": "number",
                    "description": "Confidence threshold above which Adaptive Protection's auto-deploy takes actions.\n"
                },
                "autoDeployExpirationSec": {
                    "type": "integer",
                    "description": "Duration over which Adaptive Protection's auto-deployed actions last.\n"
                },
                "autoDeployImpactedBaselineThreshold": {
                    "type": "number",
                    "description": "Impacted baseline threshold below which Adaptive Protection's auto-deploy takes actions.\n"
                },
                "autoDeployLoadThreshold": {
                    "type": "number",
                    "description": "Load threshold above which Adaptive Protection automatically deploy threshold based on the backend load threshold and detect a new rule during an alerted attack.\n"
                },
                "detectionAbsoluteQps": {
                    "type": "number",
                    "description": "Detection threshold based on absolute QPS.\n"
                },
                "detectionLoadThreshold": {
                    "type": "number",
                    "description": "Detection threshold based on the backend service's load.\n"
                },
                "detectionRelativeToBaselineQps": {
                    "type": "number",
                    "description": "Detection threshold based on QPS relative to the average of baseline traffic.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of config. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy.\n"
                },
                "trafficGranularityConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig"
                    },
                    "description": "Configuration options for enabling Adaptive Protection to work on the specified service granularity. Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig:SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig": {
            "properties": {
                "enableEachUniqueValue": {
                    "type": "boolean",
                    "description": "If enabled, traffic matching each unique value for the specified type constitutes a separate traffic unit. It can only be set to true if value is empty.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of this configuration, a granular traffic unit can be one of the following:\n* `HTTP_HEADER_HOST`\n* `HTTP_PATH`\n"
                },
                "value": {
                    "type": "string",
                    "description": "Requests that match this value constitute a granular traffic unit.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ]
        },
        "gcp:compute/SecurityPolicyAdvancedOptionsConfig:SecurityPolicyAdvancedOptionsConfig": {
            "properties": {
                "jsonCustomConfig": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyAdvancedOptionsConfigJsonCustomConfig:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig",
                    "description": "Custom configuration to apply the JSON parsing. Only applicable when\n\u003cspan pulumi-lang-nodejs=\"`jsonParsing`\" pulumi-lang-dotnet=\"`JsonParsing`\" pulumi-lang-go=\"`jsonParsing`\" pulumi-lang-python=\"`json_parsing`\" pulumi-lang-yaml=\"`jsonParsing`\" pulumi-lang-java=\"`jsonParsing`\" pulumi-lang-hcl=\"`json_parsing`\"\u003e`jsonParsing`\u003c/span\u003e is set to `STANDARD`. Structure is documented below.\n"
                },
                "jsonParsing": {
                    "type": "string",
                    "description": "Whether or not to JSON parse the payload body. Defaults to `DISABLED`.\n* `DISABLED` - Don't parse JSON payloads in POST bodies.\n* `STANDARD` - Parse JSON payloads in POST bodies.\n* `STANDARD_WITH_GRAPHQL` - Parse JSON and GraphQL payloads in POST bodies.\n"
                },
                "logLevel": {
                    "type": "string",
                    "description": "Log level to use. Defaults to `NORMAL`.\n* `NORMAL` - Normal log level.\n* `VERBOSE` - Verbose log level.\n"
                },
                "requestBodyInspectionSize": {
                    "type": "string",
                    "description": "The maximum request size chosen by the customer with Waf enabled. Values supported are \"8KB\", \"16KB, \"32KB\", \"48KB\" and \"64KB\". Values are case insensitive.\n"
                },
                "userIpRequestHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An optional list of case-insensitive request header names to use for resolving the callers client IP address.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "jsonCustomConfig",
                        "jsonParsing",
                        "logLevel",
                        "requestBodyInspectionSize"
                    ]
                }
            }
        },
        "gcp:compute/SecurityPolicyAdvancedOptionsConfigJsonCustomConfig:SecurityPolicyAdvancedOptionsConfigJsonCustomConfig": {
            "properties": {
                "contentTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of custom Content-Type header values to apply the JSON parsing. The\nformat of the Content-Type header values is defined in\n[RFC 1341](https://www.ietf.org/rfc/rfc1341.txt). When configuring a custom Content-Type header\nvalue, only the type/subtype needs to be specified, and the parameters should be excluded.\n"
                }
            },
            "type": "object",
            "required": [
                "contentTypes"
            ]
        },
        "gcp:compute/SecurityPolicyRecaptchaOptionsConfig:SecurityPolicyRecaptchaOptionsConfig": {
            "properties": {
                "redirectSiteKey": {
                    "type": "string",
                    "description": "A field to supply a reCAPTCHA site key to be used for all the rules using the redirect action with the type of `GOOGLE_RECAPTCHA` under the security policy. The specified site key needs to be created from the reCAPTCHA API. The user is responsible for the validity of the specified site key. If not specified, a Google-managed site key is used.\n"
                }
            },
            "type": "object",
            "required": [
                "redirectSiteKey"
            ]
        },
        "gcp:compute/SecurityPolicyRule:SecurityPolicyRule": {
            "properties": {
                "action": {
                    "type": "string",
                    "description": "Action to take when \u003cspan pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\" pulumi-lang-hcl=\"`match`\"\u003e`match`\u003c/span\u003e matches the request. Valid values:\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this rule. Max size is 64.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleHeaderAction:SecurityPolicyRuleHeaderAction",
                    "description": "Additional actions that are performed on headers. Structure is documented below.\n"
                },
                "match": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleMatch:SecurityPolicyRuleMatch",
                    "description": "A match condition that incoming traffic is evaluated against.\nIf it evaluates to true, the corresponding \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\" pulumi-lang-hcl=\"`action`\"\u003e`action`\u003c/span\u003e is enforced. Structure is documented below.\n"
                },
                "preconfiguredWafConfig": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRulePreconfiguredWafConfig:SecurityPolicyRulePreconfiguredWafConfig",
                    "description": "Preconfigured WAF configuration to be applied for the rule. If the rule does not evaluate preconfigured WAF rules, i.e., if `evaluatePreconfiguredWaf()` is not used, this field will have no effect. Structure is documented below.\n"
                },
                "preview": {
                    "type": "boolean",
                    "description": "When set to true, the \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\" pulumi-lang-hcl=\"`action`\"\u003e`action`\u003c/span\u003e specified above is not enforced.\nStackdriver logs for requests that trigger a preview action are annotated as such.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "An unique positive integer indicating the priority of evaluation for a rule.\nRules are evaluated from highest priority (lowest numerically) to lowest priority (highest numerically) in order.\n"
                },
                "rateLimitOptions": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleRateLimitOptions:SecurityPolicyRuleRateLimitOptions",
                    "description": "Must be specified if the \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\" pulumi-lang-hcl=\"`action`\"\u003e`action`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`rateBasedBan`\" pulumi-lang-dotnet=\"`RateBasedBan`\" pulumi-lang-go=\"`rateBasedBan`\" pulumi-lang-python=\"`rate_based_ban`\" pulumi-lang-yaml=\"`rateBasedBan`\" pulumi-lang-java=\"`rateBasedBan`\" pulumi-lang-hcl=\"`rate_based_ban`\"\u003e`rateBasedBan`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\" pulumi-lang-hcl=\"`throttle`\"\u003e`throttle`\u003c/span\u003e. Cannot be specified for other actions. Structure is documented below.\n"
                },
                "redirectOptions": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleRedirectOptions:SecurityPolicyRuleRedirectOptions",
                    "description": "Can be specified if the \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\" pulumi-lang-hcl=\"`action`\"\u003e`action`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\" pulumi-lang-hcl=\"`redirect`\"\u003e`redirect`\u003c/span\u003e. Cannot be specified for other actions. Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "action",
                "match",
                "priority"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "action",
                        "match",
                        "preview",
                        "priority"
                    ]
                }
            }
        },
        "gcp:compute/SecurityPolicyRuleHeaderAction:SecurityPolicyRuleHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyRuleHeaderActionRequestHeadersToAdd:SecurityPolicyRuleHeaderActionRequestHeadersToAdd"
                    },
                    "description": "The list of request headers to add or overwrite if they're already present.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleHeaderActionRequestHeadersToAdd:SecurityPolicyRuleHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to set.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value to set the named header to.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleMatch:SecurityPolicyRuleMatch": {
            "properties": {
                "config": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleMatchConfig:SecurityPolicyRuleMatchConfig",
                    "description": "The configuration options available when specifying versionedExpr.\nThis field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified.\nStructure is documented below.\n"
                },
                "expr": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleMatchExpr:SecurityPolicyRuleMatchExpr",
                    "description": "User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.\nStructure is documented below.\n"
                },
                "exprOptions": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleMatchExprOptions:SecurityPolicyRuleMatchExprOptions",
                    "description": "The configuration options available when specifying a user defined CEVAL expression (i.e., 'expr').\nStructure is documented below.\n"
                },
                "versionedExpr": {
                    "type": "string",
                    "description": "Preconfigured versioned expression. If this field is specified, config must also be specified.\nAvailable preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config.\nPossible values are: `SRC_IPS_V1`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleMatchConfig:SecurityPolicyRuleMatchConfig": {
            "properties": {
                "srcIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "CIDR IP address range. Maximum number of srcIpRanges allowed is 10.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleMatchExpr:SecurityPolicyRuleMatchExpr": {
            "properties": {
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.\n"
                }
            },
            "type": "object",
            "required": [
                "expression"
            ]
        },
        "gcp:compute/SecurityPolicyRuleMatchExprOptions:SecurityPolicyRuleMatchExprOptions": {
            "properties": {
                "recaptchaOptions": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleMatchExprOptionsRecaptchaOptions:SecurityPolicyRuleMatchExprOptionsRecaptchaOptions",
                    "description": "reCAPTCHA configuration options to be applied for the rule. If the rule does not evaluate reCAPTCHA tokens, this field has no effect.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "recaptchaOptions"
            ]
        },
        "gcp:compute/SecurityPolicyRuleMatchExprOptionsRecaptchaOptions:SecurityPolicyRuleMatchExprOptionsRecaptchaOptions": {
            "properties": {
                "actionTokenSiteKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of site keys to be used during the validation of reCAPTCHA action-tokens. The provided site keys need to be created from reCAPTCHA API under the same project where the security policy is created.\n"
                },
                "sessionTokenSiteKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of site keys to be used during the validation of reCAPTCHA session-tokens. The provided site keys need to be created from reCAPTCHA API under the same project where the security policy is created.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRulePreconfiguredWafConfig:SecurityPolicyRulePreconfiguredWafConfig": {
            "properties": {
                "exclusions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusion:SecurityPolicyRulePreconfiguredWafConfigExclusion"
                    },
                    "description": "An exclusion to apply during preconfigured WAF evaluation.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusion:SecurityPolicyRulePreconfiguredWafConfigExclusion": {
            "properties": {
                "requestBodies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestBody:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestBody"
                    },
                    "description": "(Optional, Beta)\nA list of request body fields to be excluded from inspection during\\npreconfigured WAF evaluation.\nStructure is documented below.\n"
                },
                "requestCookies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky"
                    },
                    "description": "Request cookie whose value will be excluded from inspection during preconfigured WAF evaluation.\nStructure is documented below.\n"
                },
                "requestHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader"
                    },
                    "description": "Request header whose value will be excluded from inspection during preconfigured WAF evaluation.\nStructure is documented below.\n"
                },
                "requestQueryParams": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam"
                    },
                    "description": "Request query parameter whose value will be excluded from inspection during preconfigured WAF evaluation.\nNote that the parameter can be in the query string or in the POST body.\nStructure is documented below.\n"
                },
                "requestUris": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri"
                    },
                    "description": "Request URI from the request line to be excluded from inspection during preconfigured WAF evaluation.\nWhen specifying this field, the query or fragment part should be excluded.\nStructure is documented below.\n"
                },
                "targetRuleIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of target rule IDs under the WAF rule set to apply the preconfigured WAF exclusion.\nIf omitted, it refers to all the rule IDs under the WAF rule set.\n"
                },
                "targetRuleSet": {
                    "type": "string",
                    "description": "Target WAF rule set to apply the preconfigured WAF exclusion.\n"
                }
            },
            "type": "object",
            "required": [
                "targetRuleSet"
            ]
        },
        "gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestBody:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestBody": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestCooky": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestHeader": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParam": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/SecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri:SecurityPolicyRulePreconfiguredWafConfigExclusionRequestUri": {
            "properties": {
                "operator": {
                    "type": "string",
                    "description": "You can specify an exact match or a partial match by using a field operator and a field value.\nAvailable options:\nEQUALS: The operator matches if the field value equals the specified value.\nSTARTS_WITH: The operator matches if the field value starts with the specified value.\nENDS_WITH: The operator matches if the field value ends with the specified value.\nCONTAINS: The operator matches if the field value contains the specified value.\nEQUALS_ANY: The operator matches if the field value is any value.\n"
                },
                "value": {
                    "type": "string",
                    "description": "A request field matching the specified value will be excluded from inspection during preconfigured WAF evaluation.\nThe field value must be given if the field operator is not EQUALS_ANY, and cannot be given if the field operator is EQUALS_ANY.\n"
                }
            },
            "type": "object",
            "required": [
                "operator"
            ]
        },
        "gcp:compute/SecurityPolicyRuleRateLimitOptions:SecurityPolicyRuleRateLimitOptions": {
            "properties": {
                "banDurationSec": {
                    "type": "integer",
                    "description": "Can only be specified if the action for the rule is \u003cspan pulumi-lang-nodejs=\"\"rateBasedBan\"\" pulumi-lang-dotnet=\"\"RateBasedBan\"\" pulumi-lang-go=\"\"rateBasedBan\"\" pulumi-lang-python=\"\"rate_based_ban\"\" pulumi-lang-yaml=\"\"rateBasedBan\"\" pulumi-lang-java=\"\"rateBasedBan\"\" pulumi-lang-hcl=\"\"rate_based_ban\"\"\u003e\"rateBasedBan\"\u003c/span\u003e.\nIf specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold.\n"
                },
                "banThreshold": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleRateLimitOptionsBanThreshold:SecurityPolicyRuleRateLimitOptionsBanThreshold",
                    "description": "Can only be specified if the action for the rule is \u003cspan pulumi-lang-nodejs=\"\"rateBasedBan\"\" pulumi-lang-dotnet=\"\"RateBasedBan\"\" pulumi-lang-go=\"\"rateBasedBan\"\" pulumi-lang-python=\"\"rate_based_ban\"\" pulumi-lang-yaml=\"\"rateBasedBan\"\" pulumi-lang-java=\"\"rateBasedBan\"\" pulumi-lang-hcl=\"\"rate_based_ban\"\"\u003e\"rateBasedBan\"\u003c/span\u003e.\nIf specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.\nStructure is documented below.\n"
                },
                "conformAction": {
                    "type": "string",
                    "description": "Action to take for requests that are under the configured rate limit threshold.\nValid option is \"allow\" only.\n"
                },
                "enforceOnKey": {
                    "type": "string",
                    "description": "Determines the key to enforce the rateLimitThreshold on. Possible values are:\n* ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKey\" is not configured.\n* IP: The source IP address of the request is the key. Each IP has this limit enforced separately.\n* HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.\n* XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.\n* HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.\n* HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.\n* SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.\n* REGION_CODE: The country/region from which the request originates.\n* TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.\n* TLS_JA4_FINGERPRINT: JA4 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.\n* USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP.\nPossible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `TLS_JA4_FINGERPRINT`, `USER_IP`.\n"
                },
                "enforceOnKeyConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig"
                    },
                    "description": "If specified, any combination of values of enforceOnKeyType/enforceOnKeyName is treated as the key on which ratelimit threshold/action is enforced.\nYou can specify up to 3 enforceOnKeyConfigs.\nIf enforceOnKeyConfigs is specified, enforceOnKey must not be specified.\nStructure is documented below.\n"
                },
                "enforceOnKeyName": {
                    "type": "string",
                    "description": "Rate limit key name applicable only for the following key types:\nHTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.\nHTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.\n"
                },
                "exceedAction": {
                    "type": "string",
                    "description": "Action to take for requests that are above the configured rate limit threshold, to either deny with a specified HTTP response code, or redirect to a different endpoint.\nValid options are deny(STATUS), where valid values for STATUS are 403, 404, 429, and 502.\n"
                },
                "exceedRedirectOptions": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleRateLimitOptionsExceedRedirectOptions:SecurityPolicyRuleRateLimitOptionsExceedRedirectOptions",
                    "description": "Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect. This field is only supported in Global Security Policies of type CLOUD_ARMOR.\nStructure is documented below.\n"
                },
                "rateLimitThreshold": {
                    "$ref": "#/types/gcp:compute/SecurityPolicyRuleRateLimitOptionsRateLimitThreshold:SecurityPolicyRuleRateLimitOptionsRateLimitThreshold",
                    "description": "Threshold at which to begin ratelimiting.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleRateLimitOptionsBanThreshold:SecurityPolicyRuleRateLimitOptionsBanThreshold": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "Number of HTTP(S) requests for calculating the threshold.\n"
                },
                "intervalSec": {
                    "type": "integer",
                    "description": "Interval over which the threshold is computed.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig:SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig": {
            "properties": {
                "enforceOnKeyName": {
                    "type": "string",
                    "description": "Rate limit key name applicable only for the following key types:\nHTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.\nHTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.\n"
                },
                "enforceOnKeyType": {
                    "type": "string",
                    "description": "Determines the key to enforce the rateLimitThreshold on. Possible values are:\n* ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKeyConfigs\" is not configured.\n* IP: The source IP address of the request is the key. Each IP has this limit enforced separately.\n* HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.\n* XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.\n* HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.\n* HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.\n* SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.\n* REGION_CODE: The country/region from which the request originates.\n* TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.\n* TLS_JA4_FINGERPRINT: JA4 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.\n* USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP.\nPossible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `TLS_JA4_FINGERPRINT`, `USER_IP`.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleRateLimitOptionsExceedRedirectOptions:SecurityPolicyRuleRateLimitOptionsExceedRedirectOptions": {
            "properties": {
                "target": {
                    "type": "string",
                    "description": "Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the redirect action.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleRateLimitOptionsRateLimitThreshold:SecurityPolicyRuleRateLimitOptionsRateLimitThreshold": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "Number of HTTP(S) requests for calculating the threshold.\n"
                },
                "intervalSec": {
                    "type": "integer",
                    "description": "Interval over which the threshold is computed.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityPolicyRuleRedirectOptions:SecurityPolicyRuleRedirectOptions": {
            "properties": {
                "target": {
                    "type": "string",
                    "description": "Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the redirect action.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityScanConfigAuthentication:SecurityScanConfigAuthentication": {
            "properties": {
                "customAccount": {
                    "$ref": "#/types/gcp:compute/SecurityScanConfigAuthenticationCustomAccount:SecurityScanConfigAuthenticationCustomAccount",
                    "description": "Describes authentication configuration that uses a custom account.\nStructure is documented below.\n"
                },
                "googleAccount": {
                    "$ref": "#/types/gcp:compute/SecurityScanConfigAuthenticationGoogleAccount:SecurityScanConfigAuthenticationGoogleAccount",
                    "description": "Describes authentication configuration that uses a Google account.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SecurityScanConfigAuthenticationCustomAccount:SecurityScanConfigAuthenticationCustomAccount": {
            "properties": {
                "loginUrl": {
                    "type": "string",
                    "description": "The login form URL of the website.\n"
                },
                "password": {
                    "type": "string",
                    "description": "The password of the custom account. The credential is stored encrypted\nin GCP.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "username": {
                    "type": "string",
                    "description": "The user name of the custom account.\n"
                }
            },
            "type": "object",
            "required": [
                "loginUrl",
                "password",
                "username"
            ]
        },
        "gcp:compute/SecurityScanConfigAuthenticationGoogleAccount:SecurityScanConfigAuthenticationGoogleAccount": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "The password of the Google account. The credential is stored encrypted\nin GCP.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "username": {
                    "type": "string",
                    "description": "The user name of the Google account.\n"
                }
            },
            "type": "object",
            "required": [
                "password",
                "username"
            ]
        },
        "gcp:compute/SecurityScanConfigSchedule:SecurityScanConfigSchedule": {
            "properties": {
                "intervalDurationDays": {
                    "type": "integer",
                    "description": "The duration of time between executions in days\n"
                },
                "scheduleTime": {
                    "type": "string",
                    "description": "A timestamp indicates when the next run will be scheduled. The value is refreshed\nby the server after each run. If unspecified, it will default to current server time,\nwhich means the scan will be scheduled to start immediately.\n"
                }
            },
            "type": "object",
            "required": [
                "intervalDurationDays"
            ]
        },
        "gcp:compute/ServiceAttachmentConnectedEndpoint:ServiceAttachmentConnectedEndpoint": {
            "properties": {
                "consumerNetwork": {
                    "type": "string",
                    "description": "(Output)\nThe url of the consumer network.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "(Output)\nThe URL of the consumer forwarding rule.\n"
                },
                "natIps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Output)\nNOTE: This field is temporarily non-functional due to an underlying API issue.\nAny value provided here will be ignored until the API issue is resolved, expected around 2026-03.\n'The nat IPs of the connected endpoint.'\n"
                },
                "propagatedConnectionCount": {
                    "type": "integer",
                    "description": "(Output)\nThe number of consumer Network Connectivity Center spokes that the connected Private Service Connect endpoint has propagated to.\n"
                },
                "pscConnectionId": {
                    "type": "string",
                    "description": "(Output)\nThe PSC connection id of the connected endpoint.\n"
                },
                "status": {
                    "type": "string",
                    "description": "(Output)\nThe status of the connection from the consumer forwarding rule to\nthis service attachment.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "consumerNetwork",
                        "endpoint",
                        "natIps",
                        "propagatedConnectionCount",
                        "pscConnectionId",
                        "status"
                    ]
                }
            }
        },
        "gcp:compute/ServiceAttachmentConsumerAcceptList:ServiceAttachmentConsumerAcceptList": {
            "properties": {
                "connectionLimit": {
                    "type": "integer",
                    "description": "The number of consumer forwarding rules the consumer project can\ncreate.\n"
                },
                "endpointUrl": {
                    "type": "string",
                    "description": "The endpoint that is allowed to connect to this service attachment.\nOnly one of project_id_or_num,\u003cspan pulumi-lang-nodejs=\" networkUrl \" pulumi-lang-dotnet=\" NetworkUrl \" pulumi-lang-go=\" networkUrl \" pulumi-lang-python=\" network_url \" pulumi-lang-yaml=\" networkUrl \" pulumi-lang-java=\" networkUrl \" pulumi-lang-hcl=\" network_url \"\u003e networkUrl \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" endpointUrl \" pulumi-lang-dotnet=\" EndpointUrl \" pulumi-lang-go=\" endpointUrl \" pulumi-lang-python=\" endpoint_url \" pulumi-lang-yaml=\" endpointUrl \" pulumi-lang-java=\" endpointUrl \" pulumi-lang-hcl=\" endpoint_url \"\u003e endpointUrl \u003c/span\u003emay be set.\n"
                },
                "networkUrl": {
                    "type": "string",
                    "description": "The network that is allowed to connect to this service attachment.\nOnly one of\u003cspan pulumi-lang-nodejs=\" projectIdOrNum \" pulumi-lang-dotnet=\" ProjectIdOrNum \" pulumi-lang-go=\" projectIdOrNum \" pulumi-lang-python=\" project_id_or_num \" pulumi-lang-yaml=\" projectIdOrNum \" pulumi-lang-java=\" projectIdOrNum \" pulumi-lang-hcl=\" project_id_or_num \"\u003e projectIdOrNum \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" networkUrl \" pulumi-lang-dotnet=\" NetworkUrl \" pulumi-lang-go=\" networkUrl \" pulumi-lang-python=\" network_url \" pulumi-lang-yaml=\" networkUrl \" pulumi-lang-java=\" networkUrl \" pulumi-lang-hcl=\" network_url \"\u003e networkUrl \u003c/span\u003emay be set.\n"
                },
                "projectIdOrNum": {
                    "type": "string",
                    "description": "A project that is allowed to connect to this service attachment.\nOnly one of\u003cspan pulumi-lang-nodejs=\" projectIdOrNum \" pulumi-lang-dotnet=\" ProjectIdOrNum \" pulumi-lang-go=\" projectIdOrNum \" pulumi-lang-python=\" project_id_or_num \" pulumi-lang-yaml=\" projectIdOrNum \" pulumi-lang-java=\" projectIdOrNum \" pulumi-lang-hcl=\" project_id_or_num \"\u003e projectIdOrNum \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" networkUrl \" pulumi-lang-dotnet=\" NetworkUrl \" pulumi-lang-go=\" networkUrl \" pulumi-lang-python=\" network_url \" pulumi-lang-yaml=\" networkUrl \" pulumi-lang-java=\" networkUrl \" pulumi-lang-hcl=\" network_url \"\u003e networkUrl \u003c/span\u003emay be set.\n"
                }
            },
            "type": "object",
            "required": [
                "connectionLimit"
            ]
        },
        "gcp:compute/ServiceAttachmentPscServiceAttachmentId:ServiceAttachmentPscServiceAttachmentId": {
            "properties": {
                "high": {
                    "type": "string",
                    "description": "(Output)\nThe high 64 bits of the PSC service attachment ID.\n"
                },
                "low": {
                    "type": "string",
                    "description": "(Output)\nThe low 64 bits of the PSC service attachment ID.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "high",
                        "low"
                    ]
                }
            }
        },
        "gcp:compute/ServiceAttachmentTunnelingConfig:ServiceAttachmentTunnelingConfig": {
            "properties": {
                "encapsulationProfile": {
                    "type": "string",
                    "description": "The encapsulation profile for tunneling traffic.\n"
                },
                "routingMode": {
                    "type": "string",
                    "description": "The routing mode for tunneling traffic.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SnapshotIamBindingCondition:SnapshotIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/SnapshotIamMemberCondition:SnapshotIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/SnapshotParams:SnapshotParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the snapshot. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/SnapshotSettingsStorageLocation:SnapshotSettingsStorageLocation": {
            "properties": {
                "locations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/SnapshotSettingsStorageLocationLocation:SnapshotSettingsStorageLocationLocation"
                    },
                    "description": "When the policy is SPECIFIC_LOCATIONS, snapshots will be stored in the\nlocations listed in this field. Keys are Cloud Storage bucket locations.\nOnly one location can be specified.\nStructure is documented below.\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The chosen location policy\nPossible values are: `NEAREST_MULTI_REGION`, `LOCAL_REGION`, `SPECIFIC_LOCATIONS`.\n"
                }
            },
            "type": "object",
            "required": [
                "policy"
            ]
        },
        "gcp:compute/SnapshotSettingsStorageLocationLocation:SnapshotSettingsStorageLocationLocation": {
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the location. It should be one of the Cloud Storage buckets.\nOnly one location can be specified. (should match location)\n"
                }
            },
            "type": "object",
            "required": [
                "location",
                "name"
            ]
        },
        "gcp:compute/SnapshotSnapshotEncryptionKey:SnapshotSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The name of the encryption key that is stored in Google Cloud KMS.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an encryption key stored in Google Cloud KMS, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "sha256": {
                    "type": "string",
                    "description": "(Output)\nThe RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "sha256"
                    ]
                }
            }
        },
        "gcp:compute/SnapshotSourceDiskEncryptionKey:SnapshotSourceDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The name of the encryption key that is stored in Google Cloud KMS.\n",
                    "willReplaceOnChanges": true
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n",
                    "willReplaceOnChanges": true
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an encryption key stored in Google Cloud KMS, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n**Note**: This property is sensitive and will not be displayed in the plan.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/StoragePoolIamBindingCondition:StoragePoolIamBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/StoragePoolIamMemberCondition:StoragePoolIamMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** Terraform considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, Terraform will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/StoragePoolParams:StoragePoolParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the storage pool. Tag keys and values have the\nsame definition as resource manager tags. Keys and values can be either in numeric format,\nsuch as tagKeys/{tag_key_id} and tagValues/{tag_value_id} or in namespaced format such as\n{org_id|projectId}/{tag_key_short_name} and {tag_value_short_name}. The field is ignored when empty.\nThe field is immutable and causes resource replacement when mutated. This field is only\nset at create time and modifying this field after creation will trigger recreation.\nTo apply tags to an existing resource, see the\u003cspan pulumi-lang-nodejs=\" gcp.tags.TagBinding \" pulumi-lang-dotnet=\" gcp.tags.TagBinding \" pulumi-lang-go=\" tags.TagBinding \" pulumi-lang-python=\" tags.TagBinding \" pulumi-lang-yaml=\" gcp.tags.TagBinding \" pulumi-lang-java=\" gcp.tags.TagBinding \" pulumi-lang-hcl=\" google_tags_tag_binding \"\u003e gcp.tags.TagBinding \u003c/span\u003eresource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/StoragePoolResourceStatus:StoragePoolResourceStatus": {
            "properties": {
                "diskCount": {
                    "type": "string",
                    "description": "(Output)\nNumber of disks used.\n"
                },
                "lastResizeTimestamp": {
                    "type": "string",
                    "description": "(Output)\nTimestamp of the last successful resize in RFC3339 text format.\n"
                },
                "maxTotalProvisionedDiskCapacityGb": {
                    "type": "string",
                    "description": "(Output)\nMaximum allowed aggregate disk size in gigabytes.\n"
                },
                "poolUsedCapacityBytes": {
                    "type": "string",
                    "description": "(Output)\nSpace used by data stored in disks within the storage pool (in bytes).\nThis will reflect the total number of bytes written to the disks in the pool, in contrast to the capacity of those disks.\n"
                },
                "poolUsedIops": {
                    "type": "string",
                    "description": "(Output)\nSum of all the disks' provisioned IOPS, minus some amount that is allowed per disk that is not counted towards pool's IOPS capacity. For more information, see https://cloud.google.com/compute/docs/disks/storage-pools.\n"
                },
                "poolUsedThroughput": {
                    "type": "string",
                    "description": "(Output)\nSum of all the disks' provisioned throughput in MB/s.\n"
                },
                "poolUserWrittenBytes": {
                    "type": "string",
                    "description": "(Output)\nAmount of data written into the pool, before it is compacted.\n"
                },
                "totalProvisionedDiskCapacityGb": {
                    "type": "string",
                    "description": "(Output)\nSum of all the capacity provisioned in disks in this storage pool.\nA disk's provisioned capacity is the same as its total capacity.\n"
                },
                "totalProvisionedDiskIops": {
                    "type": "string",
                    "description": "(Output)\nSum of all the disks' provisioned IOPS.\n"
                },
                "totalProvisionedDiskThroughput": {
                    "type": "string",
                    "description": "(Output)\nSum of all the disks' provisioned throughput in MB/s,\nminus some amount that is allowed per disk that is not counted towards pool's throughput capacity.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "diskCount",
                        "lastResizeTimestamp",
                        "maxTotalProvisionedDiskCapacityGb",
                        "poolUsedCapacityBytes",
                        "poolUsedIops",
                        "poolUsedThroughput",
                        "poolUserWrittenBytes",
                        "totalProvisionedDiskCapacityGb",
                        "totalProvisionedDiskIops",
                        "totalProvisionedDiskThroughput"
                    ]
                }
            }
        },
        "gcp:compute/StoragePoolStatus:StoragePoolStatus": {
            "properties": {
                "diskCount": {
                    "type": "string",
                    "description": "(Output)\nNumber of disks used.\n"
                },
                "lastResizeTimestamp": {
                    "type": "string",
                    "description": "(Output)\nTimestamp of the last successful resize in RFC3339 text format.\n"
                },
                "maxTotalProvisionedDiskCapacityGb": {
                    "type": "string",
                    "description": "(Output)\nMaximum allowed aggregate disk size in gigabytes.\n"
                },
                "poolUsedCapacityBytes": {
                    "type": "string",
                    "description": "(Output)\nSpace used by data stored in disks within the storage pool (in bytes).\nThis will reflect the total number of bytes written to the disks in the pool, in contrast to the capacity of those disks.\n"
                },
                "poolUsedIops": {
                    "type": "string",
                    "description": "(Output)\nSum of all the disks' provisioned IOPS, minus some amount that is allowed per disk that is not counted towards pool's IOPS capacity. For more information, see https://cloud.google.com/compute/docs/disks/storage-pools.\n"
                },
                "poolUsedThroughput": {
                    "type": "string",
                    "description": "(Output)\nSum of all the disks' provisioned throughput in MB/s.\n"
                },
                "poolUserWrittenBytes": {
                    "type": "string",
                    "description": "(Output)\nAmount of data written into the pool, before it is compacted.\n"
                },
                "totalProvisionedDiskCapacityGb": {
                    "type": "string",
                    "description": "(Output)\nSum of all the capacity provisioned in disks in this storage pool.\nA disk's provisioned capacity is the same as its total capacity.\n"
                },
                "totalProvisionedDiskIops": {
                    "type": "string",
                    "description": "(Output)\nSum of all the disks' provisioned IOPS.\n"
                },
                "totalProvisionedDiskThroughput": {
                    "type": "string",
                    "description": "(Output)\nSum of all the disks' provisioned throughput in MB/s,\nminus some amount that is allowed per disk that is not counted towards pool's throughput capacity.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "diskCount",
                        "lastResizeTimestamp",
                        "maxTotalProvisionedDiskCapacityGb",
                        "poolUsedCapacityBytes",
                        "poolUsedIops",
                        "poolUsedThroughput",
                        "poolUserWrittenBytes",
                        "totalProvisionedDiskCapacityGb",
                        "totalProvisionedDiskIops",
                        "totalProvisionedDiskThroughput"
                    ]
                }
            }
        },
        "gcp:compute/SubnetworkIAMBindingCondition:SubnetworkIAMBindingCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** This provider considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/SubnetworkIAMMemberCondition:SubnetworkIAMMemberCondition": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.\n\n\u003e **Warning:** This provider considers the \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\" pulumi-lang-hcl=\"`role`\"\u003e`role`\u003c/span\u003e and condition contents (\u003cspan pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\" pulumi-lang-hcl=\"`title`\"\u003e`title`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\" pulumi-lang-hcl=\"`description`\"\u003e`description`\u003c/span\u003e+\u003cspan pulumi-lang-nodejs=\"`expression`\" pulumi-lang-dotnet=\"`Expression`\" pulumi-lang-go=\"`expression`\" pulumi-lang-python=\"`expression`\" pulumi-lang-yaml=\"`expression`\" pulumi-lang-java=\"`expression`\" pulumi-lang-hcl=\"`expression`\"\u003e`expression`\u003c/span\u003e) as the\nidentifier for the binding. This means that if any part of the condition is changed out-of-band, the provider will\nconsider it to be an entirely different resource and will treat it as such.\n",
                    "willReplaceOnChanges": true
                },
                "expression": {
                    "type": "string",
                    "description": "Textual representation of an expression in Common Expression Language syntax.\n",
                    "willReplaceOnChanges": true
                },
                "title": {
                    "type": "string",
                    "description": "A title for the expression, i.e. a short string describing its purpose.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "expression",
                "title"
            ]
        },
        "gcp:compute/SubnetworkLogConfig:SubnetworkLogConfig": {
            "properties": {
                "aggregationInterval": {
                    "type": "string",
                    "description": "Can only be specified if VPC flow logging for this subnetwork is enabled.\nToggles the aggregation interval for collecting flow logs. Increasing the\ninterval time will reduce the amount of generated flow logs for long\nlasting connections. Default is an interval of 5 seconds per connection.\nDefault value is `INTERVAL_5_SEC`.\nPossible values are: `INTERVAL_5_SEC`, `INTERVAL_30_SEC`, `INTERVAL_1_MIN`, `INTERVAL_5_MIN`, `INTERVAL_10_MIN`, `INTERVAL_15_MIN`.\n"
                },
                "filterExpr": {
                    "type": "string",
                    "description": "Export filter used to define which VPC flow logs should be logged, as as CEL expression. See\nhttps://cloud.google.com/vpc/docs/flow-logs#filtering for details on how to format this field.\nThe default value is 'true', which evaluates to include everything.\n"
                },
                "flowSampling": {
                    "type": "number",
                    "description": "Can only be specified if VPC flow logging for this subnetwork is enabled.\nThe value of the field must be in [0, 1]. Set the sampling rate of VPC\nflow logs within the subnetwork where 1.0 means all collected logs are\nreported and 0.0 means no logs are reported. Default is 0.5 which means\nhalf of all collected logs are reported.\n"
                },
                "metadata": {
                    "type": "string",
                    "description": "Can only be specified if VPC flow logging for this subnetwork is enabled.\nConfigures whether metadata fields should be added to the reported VPC\nflow logs.\nDefault value is `INCLUDE_ALL_METADATA`.\nPossible values are: `EXCLUDE_ALL_METADATA`, `INCLUDE_ALL_METADATA`, `CUSTOM_METADATA`.\n"
                },
                "metadataFields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of metadata fields that should be added to reported logs.\nCan only be specified if VPC flow logs for this subnetwork is enabled and \"metadata\" is set to CUSTOM_METADATA.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/SubnetworkParams:SubnetworkParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the subnetwork. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456. The field is ignored when empty.\nThe field is immutable and causes resource replacement when mutated. This field is only\nset at create time and modifying this field after creation will trigger recreation.\nTo apply tags to an existing resource, see the\u003cspan pulumi-lang-nodejs=\" gcp.tags.TagBinding \" pulumi-lang-dotnet=\" gcp.tags.TagBinding \" pulumi-lang-go=\" tags.TagBinding \" pulumi-lang-python=\" tags.TagBinding \" pulumi-lang-yaml=\" gcp.tags.TagBinding \" pulumi-lang-java=\" gcp.tags.TagBinding \" pulumi-lang-hcl=\" google_tags_tag_binding \"\u003e gcp.tags.TagBinding \u003c/span\u003eresource.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/SubnetworkSecondaryIpRange:SubnetworkSecondaryIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The range of IP addresses belonging to this subnetwork secondary\nrange. Provide this property when you create the subnetwork.\nRanges must be unique and non-overlapping with all primary and\nsecondary IP ranges within a network. Only IPv4 is supported.\nField is optional when \u003cspan pulumi-lang-nodejs=\"`reservedInternalRange`\" pulumi-lang-dotnet=\"`ReservedInternalRange`\" pulumi-lang-go=\"`reservedInternalRange`\" pulumi-lang-python=\"`reserved_internal_range`\" pulumi-lang-yaml=\"`reservedInternalRange`\" pulumi-lang-java=\"`reservedInternalRange`\" pulumi-lang-hcl=\"`reserved_internal_range`\"\u003e`reservedInternalRange`\u003c/span\u003e is defined, otherwise required.\n"
                },
                "ipCollection": {
                    "type": "string",
                    "description": "(Optional, Beta)\nReference to a Public Delegated Prefix (PDP) for BYOIP.\nThis field should be specified for configuring BYOGUA internal IPv6 secondary range.\nWhen specified along with the ip_cidr_range, the\u003cspan pulumi-lang-nodejs=\" ipCidrRange \" pulumi-lang-dotnet=\" IpCidrRange \" pulumi-lang-go=\" ipCidrRange \" pulumi-lang-python=\" ip_cidr_range \" pulumi-lang-yaml=\" ipCidrRange \" pulumi-lang-java=\" ipCidrRange \" pulumi-lang-hcl=\" ip_cidr_range \"\u003e ipCidrRange \u003c/span\u003emust lie within the PDP referenced by the `ipCollection` field.\nWhen specified without the ip_cidr_range, the range is auto-allocated from the PDP referenced by the `ipCollection` field.\n"
                },
                "ipVersion": {
                    "type": "string",
                    "description": "(Optional, Beta)\nThe IP version of the secondary range. If not specified, IPV4 is used.\nPossible values are: `IPV4`, `IPV6`.\n"
                },
                "rangeName": {
                    "type": "string",
                    "description": "The name associated with this subnetwork secondary range, used\nwhen adding an alias IP range to a VM instance. The name must\nbe 1-63 characters long, and comply with RFC1035. The name\nmust be unique within the subnetwork.\n"
                },
                "reservedInternalRange": {
                    "type": "string",
                    "description": "The ID of the reserved internal range. Must be prefixed with `networkconnectivity.googleapis.com`\nE.g. `networkconnectivity.googleapis.com/projects/{project}/locations/global/internalRanges/{rangeId}`\n"
                }
            },
            "type": "object",
            "required": [
                "rangeName"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipCidrRange",
                        "ipVersion",
                        "rangeName"
                    ]
                }
            }
        },
        "gcp:compute/URLMapDefaultCustomErrorResponsePolicy:URLMapDefaultCustomErrorResponsePolicy": {
            "properties": {
                "errorResponseRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapDefaultCustomErrorResponsePolicyErrorResponseRule:URLMapDefaultCustomErrorResponsePolicyErrorResponseRule"
                    },
                    "description": "Specifies rules for returning error responses.\nIn a given policy, if you specify rules for both a range of error codes as well as rules for specific error codes then rules with specific error codes have a higher priority.\nFor example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX).\nIf the backend service returns a 401, then the rule for 401 will be applied. However if the backend service returns a 403, the rule for 4xx takes effect.\nStructure is documented below.\n"
                },
                "errorService": {
                    "type": "string",
                    "description": "The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are:\nhttps://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket\ncompute/v1/projects/project/global/backendBuckets/myBackendBucket\nglobal/backendBuckets/myBackendBucket\nIf errorService is not specified at lower levels like pathMatcher, pathRule and routeRule, an errorService specified at a higher level in the UrlMap will be used. If UrlMap.defaultCustomErrorResponsePolicy contains one or more errorResponseRules[], it must specify errorService.\nIf load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured).\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultCustomErrorResponsePolicyErrorResponseRule:URLMapDefaultCustomErrorResponsePolicyErrorResponseRule": {
            "properties": {
                "matchResponseCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Valid values include:\n- A number between 400 and 599: For example 401 or 503, in which case the load balancer applies the policy if the error code exactly matches this value.\n- 5xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 500 to 599.\n- 4xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 400 to 499.\nValues must be unique within matchResponseCodes and across all errorResponseRules of CustomErrorResponsePolicy.\n"
                },
                "overrideResponseCode": {
                    "type": "integer",
                    "description": "The HTTP status code returned with the response containing the custom error content.\nIf overrideResponseCode is not supplied, the same response code returned by the original backend bucket or backend service is returned to the client.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The full path to a file within backendBucket. For example: /errors/defaultError.html\npath must start with a leading slash. path cannot have trailing slashes.\nIf the file is not available in backendBucket or the load balancer cannot reach the BackendBucket, a simple Not Found Error is returned to the client.\nThe value must be from 1 to 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteAction:URLMapDefaultRouteAction": {
            "properties": {
                "cachePolicy": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCachePolicy:URLMapDefaultRouteActionCachePolicy",
                    "description": "Specifies the cache policy configuration for matched traffic. Available\nonly for Global EXTERNAL_MANAGED load balancer schemes. At least one\nproperty must be specified. This policy cannot be specified if any target\nbackend has Identity-Aware Proxy enabled.\nStructure is documented below.\n"
                },
                "corsPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCorsPolicy:URLMapDefaultRouteActionCorsPolicy",
                    "description": "The specification for allowing client side cross-origin requests. Please see\n[W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)\nStructure is documented below.\n"
                },
                "faultInjectionPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionFaultInjectionPolicy:URLMapDefaultRouteActionFaultInjectionPolicy",
                    "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure.\nAs part of fault injection, when clients send requests to a backend service, delays can be introduced by Loadbalancer on a\npercentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted\nby the Loadbalancer for a percentage of requests.\ntimeout and retryPolicy will be ignored by clients that are configured with a faultInjectionPolicy.\nStructure is documented below.\n"
                },
                "maxStreamDuration": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionMaxStreamDuration:URLMapDefaultRouteActionMaxStreamDuration",
                    "description": "Specifies the maximum duration (timeout) for streams on the selected route.\nUnlike the `Timeout` field where the timeout duration starts from the time the request\nhas been fully processed (known as end-of-stream), the duration in this field\nis computed from the beginning of the stream until the response has been processed,\nincluding all retries. A stream that does not complete in this duration is closed.\nStructure is documented below.\n"
                },
                "requestMirrorPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionRequestMirrorPolicy:URLMapDefaultRouteActionRequestMirrorPolicy",
                    "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service.\nLoadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service,\nthe host / authority header is suffixed with -shadow.\nStructure is documented below.\n"
                },
                "retryPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionRetryPolicy:URLMapDefaultRouteActionRetryPolicy",
                    "description": "Specifies the retry policy associated with this route.\nStructure is documented below.\n"
                },
                "timeout": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionTimeout:URLMapDefaultRouteActionTimeout",
                    "description": "Specifies the timeout for the selected route. Timeout is computed from the time the request has been\nfully processed (i.e. end-of-stream) up until the response has been completely processed. Timeout includes all retries.\nIf not specified, will use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "urlRewrite": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionUrlRewrite:URLMapDefaultRouteActionUrlRewrite",
                    "description": "The spec to modify the URL of the request, prior to forwarding the request to the matched service.\nStructure is documented below.\n"
                },
                "weightedBackendServices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionWeightedBackendService:URLMapDefaultRouteActionWeightedBackendService"
                    },
                    "description": "A list of weighted backend services to send traffic to when a route match occurs.\nThe weights determine the fraction of traffic that flows to their corresponding backend service.\nIf all traffic needs to go to a single backend service, there must be one weightedBackendService\nwith weight set to a non 0 number.\nOnce a backendService is identified and before forwarding the request to the backend service,\nadvanced routing actions like Url rewrites and header transformations are applied depending on\nadditional settings specified in this HttpRouteAction.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxStreamDuration",
                        "timeout"
                    ]
                }
            }
        },
        "gcp:compute/URLMapDefaultRouteActionCachePolicy:URLMapDefaultRouteActionCachePolicy": {
            "properties": {
                "cacheBypassRequestHeaderNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Bypass the cache when the specified request headers are matched by name,\ne.g. Pragma or Authorization headers. Values are case-insensitive. Up to 5\nheader names can be specified. The cache is bypassed for all cacheMode\nvalues.\n"
                },
                "cacheKeyPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCachePolicyCacheKeyPolicy:URLMapDefaultRouteActionCachePolicyCacheKeyPolicy",
                    "description": "The cache key configuration. If not specified, the default behavior depends\non the backend type: for Backend Services, the complete request URI is\nused; for Backend Buckets, the request URI is used without the protocol or\nhost, and only query parameters known to Cloud Storage are included.\nStructure is documented below.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this route. If not\nspecified, Cloud CDN uses CACHE_ALL_STATIC mode.\nPossible values are: `USE_ORIGIN_HEADERS`, `FORCE_CACHE_ALL`, `CACHE_ALL_STATIC`.\n"
                },
                "clientTtl": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCachePolicyClientTtl:URLMapDefaultRouteActionCachePolicyClientTtl",
                    "description": "Specifies a separate client (e.g. browser client) maximum TTL for cached\ncontent. This is used to clamp the max-age (or Expires) value sent to the\nclient. With FORCE_CACHE_ALL, the lesser of clientTtl and defaultTtl\nis used for the response max-age directive, along with a \"public\"\ndirective. For cacheable content in CACHE_ALL_STATIC mode, clientTtl\nclamps the max-age from the origin (if specified), or else sets the\nresponse max-age directive to the lesser of the clientTtl and defaultTtl,\nand also ensures a \"public\" cache-control directive is present. The maximum\nallowed value is 31,622,400s (1 year). If not specified, Cloud CDN uses\n3600s (1 hour) for CACHE_ALL_STATIC mode. Cannot exceed maxTtl.\nCannot be specified when cacheMode is USE_ORIGIN_HEADERS.\nStructure is documented below.\n"
                },
                "defaultTtl": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCachePolicyDefaultTtl:URLMapDefaultRouteActionCachePolicyDefaultTtl",
                    "description": "Specifies the default TTL for cached content for responses that do not have\nan existing valid TTL (max-age or s-maxage). Setting a TTL of \"0\" means\n\"always revalidate\". The value of defaultTtl cannot be set to a value\ngreater than that of maxTtl. When the cacheMode is set to\nFORCE_CACHE_ALL, the defaultTtl will overwrite the TTL set in all\nresponses. The maximum allowed value is 31,622,400s (1 year). Infrequently\naccessed objects may be evicted from the cache before the defined TTL. If\nnot specified, Cloud CDN uses 3600s (1 hour) for CACHE_ALL_STATIC and\nFORCE_CACHE_ALL modes. Cannot be specified when cacheMode is\nUSE_ORIGIN_HEADERS.\nStructure is documented below.\n"
                },
                "maxTtl": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCachePolicyMaxTtl:URLMapDefaultRouteActionCachePolicyMaxTtl",
                    "description": "Specifies the maximum allowed TTL for cached content. Cache directives that\nattempt to set a max-age or s-maxage higher than this, or an Expires header\nmore than maxTtl seconds in the future will be capped at the value of\nmaxTtl, as if it were the value of an s-maxage Cache-Control directive.\nHeaders sent to the client will not be modified. Setting a TTL of \"0\" means\n\"always revalidate\". The maximum allowed value is 31,622,400s (1 year).\nInfrequently accessed objects may be evicted from the cache before the\ndefined TTL. If not specified, Cloud CDN uses 86400s (1 day) for\nCACHE_ALL_STATIC mode. Can be specified only for CACHE_ALL_STATIC cache\nmode.\nStructure is documented below.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply\nfine-grained caching for common errors or redirects. This can reduce the\nload on your origin and improve end-user experience by reducing response\nlatency. When the cacheMode is set to CACHE_ALL_STATIC or\nUSE_ORIGIN_HEADERS, negative caching applies to responses with the\nspecified response code that lack any Cache-Control, Expires, or\nPragma: no-cache directives. When the cacheMode is set to\nFORCE_CACHE_ALL, negative caching applies to all responses with the\nspecified response code, and overrides any caching headers. By default,\nCloud CDN applies the following TTLs to these HTTP status codes:\n* 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m\n* 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s\n* 405 (Method Not Found), 501 (Not Implemented): 60s\nThese defaults can be overridden in negativeCachingPolicy. If not\nspecified, Cloud CDN applies negative caching by default.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCachePolicyNegativeCachingPolicy:URLMapDefaultRouteActionCachePolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching\nmust be enabled to configure negativeCachingPolicy. Omitting the policy\nand leaving negativeCaching enabled will use Cloud CDN's default cache\nTTLs. Note that when specifying an explicit negativeCachingPolicy, you\nshould take care to specify a cache TTL for all response codes that you\nwish to cache. Cloud CDN will not apply any default negative caching when\na policy exists.\nStructure is documented below.\n"
                },
                "requestCoalescing": {
                    "type": "boolean",
                    "description": "If true then Cloud CDN will combine multiple concurrent cache fill\nrequests into a small number of requests to the origin. If not specified,\nCloud CDN applies request coalescing by default.\n"
                },
                "serveWhileStale": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCachePolicyServeWhileStale:URLMapDefaultRouteActionCachePolicyServeWhileStale",
                    "description": "Serve existing content from the cache (if available) when revalidating\ncontent with the origin, or when an error is encountered when refreshing\nthe cache. This setting defines the default \"max-stale\" duration for any\ncached responses that do not specify a max-stale directive. Stale\nresponses that exceed the TTL configured here will not be served. The\ndefault limit (max-stale) is 86400s (1 day), which will allow stale\ncontent to be served up to this limit beyond the max-age (or s-maxage) of\na cached response. The maximum allowed value is 604800 (1 week). Set this\nto zero (0) to disable serve-while-stale.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionCachePolicyCacheKeyPolicy:URLMapDefaultRouteActionCachePolicyCacheKeyPolicy": {
            "properties": {
                "excludedQueryParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to exclude in cache keys. All other\nparameters will be included. Either specify excludedQueryParameters\nor includedQueryParameters, not both. '\u0026' and '=' will be percent\nencoded and not treated as delimiters. Note: This field applies to\nroutes that use backend services. Attempting to set it on a route that\npoints exclusively to Backend Buckets will result in a configuration\nerror. For routes that point to a Backend Bucket, use\nincludedQueryParameters to define which parameters should be part of\nthe cache key.\n"
                },
                "includeHost": {
                    "type": "boolean",
                    "description": "If true, requests to different hosts will be cached separately. Note:\nThis setting is only applicable to routes that use a Backend Service.\nIt does not affect requests served by a Backend Bucket, as the host is\nnever included in a Backend Bucket's cache key. Attempting to set it on\na route that points exclusively to Backend Buckets will result in a\nconfiguration error.\n"
                },
                "includeProtocol": {
                    "type": "boolean",
                    "description": "If true, http and https requests will be cached separately. Note: This\nsetting is only applicable to routes that use a Backend Service. It\ndoes not affect requests served by a Backend Bucket, as the protocol is\nnever included in a Backend Bucket's cache key. Attempting to set on a\nroute that points exclusively to Backend Buckets will result in a\nconfiguration error.\n"
                },
                "includeQueryString": {
                    "type": "boolean",
                    "description": "If true, include query string parameters in the cache key according to\nincludedQueryParameters and excludedQueryParameters. If neither is\nset, the entire query string will be included. If false, the query\nstring will be excluded from the cache key entirely. Note: This field\napplies to routes that use backend services. Attempting to set it on a\nroute that points exclusively to Backend Buckets will result in a\nconfiguration error. For routes that point to a Backend Bucket, use\nincludedQueryParameters to define which parameters should be part of\nthe cache key.\n"
                },
                "includedCookieNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP cookies (by name) to be used in the cache key. The\nname=value pair will be used in the cache key Cloud CDN generates.\nNote: This setting is only applicable to routes that use a Backend\nService. It does not affect requests served by a Backend Bucket.\nAttempting to set it on a route that points exclusively to Backend\nBuckets will result in a configuration error. Up to 5 cookie names can\nbe specified.\n"
                },
                "includedHeaderNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP request headers (by name) to be used in the cache key.\n"
                },
                "includedQueryParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys. All other\nparameters will be excluded. Either specify includedQueryParameters\nor excludedQueryParameters, not both. '\u0026' and '=' will be percent\nencoded and not treated as delimiters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionCachePolicyClientTtl:URLMapDefaultRouteActionCachePolicyClientTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapDefaultRouteActionCachePolicyDefaultTtl:URLMapDefaultRouteActionCachePolicyDefaultTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapDefaultRouteActionCachePolicyMaxTtl:URLMapDefaultRouteActionCachePolicyMaxTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapDefaultRouteActionCachePolicyNegativeCachingPolicy:URLMapDefaultRouteActionCachePolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes\n300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 can be\nspecified as values, and you cannot specify a status code more than\nonce.\n"
                },
                "ttl": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionCachePolicyNegativeCachingPolicyTtl:URLMapDefaultRouteActionCachePolicyNegativeCachingPolicyTtl",
                    "description": "The TTL (in seconds) for which to cache responses with the\ncorresponding status code. The maximum allowed value is 1800s (30\nminutes). Infrequently accessed objects may be evicted from the cache\nbefore the defined TTL.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionCachePolicyNegativeCachingPolicyTtl:URLMapDefaultRouteActionCachePolicyNegativeCachingPolicyTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapDefaultRouteActionCachePolicyServeWhileStale:URLMapDefaultRouteActionCachePolicyServeWhileStale": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapDefaultRouteActionCorsPolicy:URLMapDefaultRouteActionCorsPolicy": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials.\nThis translates to the Access-Control-Allow-Credentials header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Methods header.\n"
                },
                "allowOriginRegexes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "allowOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "integer",
                    "description": "Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionFaultInjectionPolicy:URLMapDefaultRouteActionFaultInjectionPolicy": {
            "properties": {
                "abort": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionFaultInjectionPolicyAbort:URLMapDefaultRouteActionFaultInjectionPolicyAbort",
                    "description": "The specification for how client requests are aborted as part of fault injection.\nStructure is documented below.\n"
                },
                "delay": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionFaultInjectionPolicyDelay:URLMapDefaultRouteActionFaultInjectionPolicyDelay",
                    "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionFaultInjectionPolicyAbort:URLMapDefaultRouteActionFaultInjectionPolicyAbort": {
            "properties": {
                "httpStatus": {
                    "type": "integer",
                    "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionFaultInjectionPolicyDelay:URLMapDefaultRouteActionFaultInjectionPolicyDelay": {
            "properties": {
                "fixedDelay": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelay:URLMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelay",
                    "description": "Specifies the value of the fixed delay interval.\nStructure is documented below.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelay:URLMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelay": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionMaxStreamDuration:URLMapDefaultRouteActionMaxStreamDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapDefaultRouteActionRequestMirrorPolicy:URLMapDefaultRouteActionRequestMirrorPolicy": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the BackendService resource being mirrored to.\n"
                },
                "mirrorPercent": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe percentage of requests to be mirrored to backendService.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService"
            ]
        },
        "gcp:compute/URLMapDefaultRouteActionRetryPolicy:URLMapDefaultRouteActionRetryPolicy": {
            "properties": {
                "numRetries": {
                    "type": "integer",
                    "description": "Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.\n"
                },
                "perTryTimeout": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionRetryPolicyPerTryTimeout:URLMapDefaultRouteActionRetryPolicyPerTryTimeout",
                    "description": "Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "retryConditions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specfies one or more conditions when this retry rule applies. Valid values are:\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with any 5xx response code,\nor if the backend service does not respond at all, example: disconnects, reset, read timeout,\n* connection failure, and refused streams.\n* gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures connecting to backend services,\nfor example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\nCurrently the only retriable error supported is 409.\n* refused-stream:Loadbalancer will retry if the backend service resets the stream with a REFUSED_STREAM error code.\nThis reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response header is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the gRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response header is set to resource-exhausted\n* unavailable: Loadbalancer will retry if the gRPC status code in the response header is set to unavailable\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionRetryPolicyPerTryTimeout:URLMapDefaultRouteActionRetryPolicyPerTryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionTimeout:URLMapDefaultRouteActionTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionUrlRewrite:URLMapDefaultRouteActionUrlRewrite": {
            "properties": {
                "hostRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected service, the request's host header is replaced\nwith contents of hostRewrite.\nThe value must be between 1 and 255 characters.\n"
                },
                "pathPrefixRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected backend service, the matching portion of the\nrequest's path is replaced by pathPrefixRewrite.\nThe value must be between 1 and 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionWeightedBackendService:URLMapDefaultRouteActionWeightedBackendService": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the default BackendService resource. Before forwarding the\nrequest to backendService, the loadbalancer applies any relevant headerActions\nspecified as part of this backendServiceWeight.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionWeightedBackendServiceHeaderAction:URLMapDefaultRouteActionWeightedBackendServiceHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for\nthe selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing\nHttpRouteRule, PathMatcher and UrlMap.\nStructure is documented below.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Specifies the fraction of traffic sent to backendService, computed as\nweight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request\nhas been directed to a backendService, subsequent requests will be sent to the same backendService\nas determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionWeightedBackendServiceHeaderAction:URLMapDefaultRouteActionWeightedBackendServiceHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:URLMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request prior to forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:URLMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response prior to sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:URLMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:URLMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapDefaultUrlRedirect:URLMapDefaultUrlRedirect": {
            "properties": {
                "hostRedirect": {
                    "type": "string",
                    "description": "The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.\n"
                },
                "httpsRedirect": {
                    "type": "boolean",
                    "description": "If set to true, the URL scheme in the redirected request is set to https. If set to\nfalse, the URL scheme of the redirected request will remain the same as that of the\nrequest. This must only be set for UrlMaps used in TargetHttpProxys. Setting this\ntrue for TargetHttpsProxy is not permitted. The default is set to false.\n"
                },
                "pathRedirect": {
                    "type": "string",
                    "description": "The path that will be used in the redirect response instead of the one that was\nsupplied in the request. pathRedirect cannot be supplied together with\nprefixRedirect. Supply one alone or neither. If neither is supplied, the path of the\noriginal request will be used for the redirect. The value must be between 1 and 1024\ncharacters.\n"
                },
                "prefixRedirect": {
                    "type": "string",
                    "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\nprefixRedirect cannot be supplied together with pathRedirect. Supply one alone or\nneither. If neither is supplied, the path of the original request will be used for\nthe redirect. The value must be between 1 and 1024 characters.\n"
                },
                "redirectResponseCode": {
                    "type": "string",
                    "description": "The HTTP Status code to use for this RedirectAction. Supported values are:\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n* FOUND, which corresponds to 302.\n* SEE_OTHER which corresponds to 303.\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained.\n"
                },
                "stripQuery": {
                    "type": "boolean",
                    "description": "If set to true, any accompanying query portion of the original URL is removed prior\nto redirecting the request. If set to false, the query portion of the original URL is\nretained. The default is set to false.\nThis field is required to ensure an empty block is not set. The normal default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "stripQuery"
            ]
        },
        "gcp:compute/URLMapHeaderAction:URLMapHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapHeaderActionRequestHeadersToAdd:URLMapHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request prior to forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapHeaderActionResponseHeadersToAdd:URLMapHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response prior to sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapHeaderActionRequestHeadersToAdd:URLMapHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapHeaderActionResponseHeadersToAdd:URLMapHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapHostRule:URLMapHostRule": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource. Provide this property when you create\nthe resource.\n"
                },
                "hosts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of host patterns to match. They must be valid hostnames, except * will\nmatch any string of ([a-z0-9-.]*). In that case, * must be the first character\nand must be followed in the pattern by either - or ..\n"
                },
                "pathMatcher": {
                    "type": "string",
                    "description": "The name of the PathMatcher to use to match the path portion of the URL if the\nhostRule matches the URL's host portion.\n"
                }
            },
            "type": "object",
            "required": [
                "hosts",
                "pathMatcher"
            ]
        },
        "gcp:compute/URLMapPathMatcher:URLMapPathMatcher": {
            "properties": {
                "defaultCustomErrorResponsePolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultCustomErrorResponsePolicy:URLMapPathMatcherDefaultCustomErrorResponsePolicy",
                    "description": "defaultCustomErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendService or BackendBucket responds with an error.\nThis policy takes effect at the PathMatcher level and applies only when no policy has been defined for the error code at lower levels like RouteRule and PathRule within this PathMatcher. If an error code does not have a policy defined in defaultCustomErrorResponsePolicy, then a policy defined for the error code in UrlMap.defaultCustomErrorResponsePolicy takes effect.\nFor example, consider a UrlMap with the following configuration:\nUrlMap.defaultCustomErrorResponsePolicy is configured with policies for 5xx and 4xx errors\nA RouteRule for /coming_soon/ is configured for the error code 404.\nIf the request is for www.myotherdomain.com and a 404 is encountered, the policy under UrlMap.defaultCustomErrorResponsePolicy takes effect. If a 404 response is encountered for the request www.example.com/current_events/, the pathMatcher's policy takes effect. If however, the request for www.example.com/coming_soon/ encounters a 404, the policy in RouteRule.customErrorResponsePolicy takes effect. If any of the requests in this example encounter a 500 error code, the policy at UrlMap.defaultCustomErrorResponsePolicy takes effect.\nWhen used in conjunction with pathMatcher.defaultRouteAction.retryPolicy, retries take precedence. Only once all retries are exhausted, the defaultCustomErrorResponsePolicy is applied. While attempting a retry, if load balancer is successful in reaching the service, the defaultCustomErrorResponsePolicy is ignored and the response from the service is returned to the client.\ndefaultCustomErrorResponsePolicy is supported only for global external Application Load Balancers.\nStructure is documented below.\n"
                },
                "defaultRouteAction": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteAction:URLMapPathMatcherDefaultRouteAction",
                    "description": "defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs\nadvanced routing actions like URL rewrites, header transformations, etc. prior to forwarding the request\nto the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set.\nConversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices.\nOnly one of defaultRouteAction or defaultUrlRedirect must be set.\nStructure is documented below.\n"
                },
                "defaultService": {
                    "type": "string",
                    "description": "The backend service or backend bucket to use when none of the given paths match.\n"
                },
                "defaultUrlRedirect": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultUrlRedirect:URLMapPathMatcherDefaultUrlRedirect",
                    "description": "When none of the specified hostRules match, the request is redirected to a URL specified\nby defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or\ndefaultRouteAction must not be set.\nStructure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource. Provide this property when you create\nthe resource.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherHeaderAction:URLMapPathMatcherHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for\nthe selected backendService. HeaderAction specified here are applied after the\nmatching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap\nStructure is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name to which this PathMatcher is referred by the HostRule.\n"
                },
                "pathRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRule:URLMapPathMatcherPathRule"
                    },
                    "description": "The list of path rules. Use this list instead of routeRules when routing based\non simple path matching is all that's required. The order by which path rules\nare specified does not matter. Matches are always done on the longest-path-first\nbasis. For example: a pathRule with a path /a/b/c/* will match before /a/b/*\nirrespective of the order in which those paths appear in this list. Within a\ngiven pathMatcher, only one of pathRules or routeRules must be set.\nStructure is documented below.\n"
                },
                "routeRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRule:URLMapPathMatcherRouteRule"
                    },
                    "description": "The list of ordered HTTP route rules. Use this list instead of pathRules when\nadvanced route matching and routing actions are desired. The order of specifying\nrouteRules matters: the first rule that matches will cause its specified routing\naction to take effect. Within a given pathMatcher, only one of pathRules or\nrouteRules must be set. routeRules are not supported in UrlMaps intended for\nExternal load balancers.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/URLMapPathMatcherDefaultCustomErrorResponsePolicy:URLMapPathMatcherDefaultCustomErrorResponsePolicy": {
            "properties": {
                "errorResponseRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRule:URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRule"
                    },
                    "description": "Specifies rules for returning error responses.\nIn a given policy, if you specify rules for both a range of error codes as well as rules for specific error codes then rules with specific error codes have a higher priority.\nFor example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX).\nIf the backend service returns a 401, then the rule for 401 will be applied. However if the backend service returns a 403, the rule for 4xx takes effect.\nStructure is documented below.\n"
                },
                "errorService": {
                    "type": "string",
                    "description": "The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are:\nhttps://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket\ncompute/v1/projects/project/global/backendBuckets/myBackendBucket\nglobal/backendBuckets/myBackendBucket\nIf errorService is not specified at lower levels like pathMatcher, pathRule and routeRule, an errorService specified at a higher level in the UrlMap will be used. If UrlMap.defaultCustomErrorResponsePolicy contains one or more errorResponseRules[], it must specify errorService.\nIf load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured).\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRule:URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRule": {
            "properties": {
                "matchResponseCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Valid values include:\n- A number between 400 and 599: For example 401 or 503, in which case the load balancer applies the policy if the error code exactly matches this value.\n- 5xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 500 to 599.\n- 4xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 400 to 499.\nValues must be unique within matchResponseCodes and across all errorResponseRules of CustomErrorResponsePolicy.\n"
                },
                "overrideResponseCode": {
                    "type": "integer",
                    "description": "The HTTP status code returned with the response containing the custom error content.\nIf overrideResponseCode is not supplied, the same response code returned by the original backend bucket or backend service is returned to the client.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The full path to a file within backendBucket. For example: /errors/defaultError.html\npath must start with a leading slash. path cannot have trailing slashes.\nIf the file is not available in backendBucket or the load balancer cannot reach the BackendBucket, a simple Not Found Error is returned to the client.\nThe value must be from 1 to 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteAction:URLMapPathMatcherDefaultRouteAction": {
            "properties": {
                "cachePolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicy:URLMapPathMatcherDefaultRouteActionCachePolicy",
                    "description": "Specifies the cache policy configuration for matched traffic. Available\nonly for Global EXTERNAL_MANAGED load balancer schemes. At least one\nproperty must be specified. This policy cannot be specified if any target\nbackend has Identity-Aware Proxy enabled.\nStructure is documented below.\n"
                },
                "corsPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCorsPolicy:URLMapPathMatcherDefaultRouteActionCorsPolicy",
                    "description": "The specification for allowing client side cross-origin requests. Please see\n[W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)\nStructure is documented below.\n"
                },
                "faultInjectionPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionFaultInjectionPolicy:URLMapPathMatcherDefaultRouteActionFaultInjectionPolicy",
                    "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure.\nAs part of fault injection, when clients send requests to a backend service, delays can be introduced by Loadbalancer on a\npercentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted\nby the Loadbalancer for a percentage of requests.\ntimeout and retryPolicy will be ignored by clients that are configured with a faultInjectionPolicy.\nStructure is documented below.\n"
                },
                "maxStreamDuration": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionMaxStreamDuration:URLMapPathMatcherDefaultRouteActionMaxStreamDuration",
                    "description": "Specifies the maximum duration (timeout) for streams on the selected route.\nUnlike the `Timeout` field where the timeout duration starts from the time the request\nhas been fully processed (known as end-of-stream), the duration in this field\nis computed from the beginning of the stream until the response has been processed,\nincluding all retries. A stream that does not complete in this duration is closed.\nStructure is documented below.\n"
                },
                "requestMirrorPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionRequestMirrorPolicy:URLMapPathMatcherDefaultRouteActionRequestMirrorPolicy",
                    "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service.\nLoadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service,\nthe host / authority header is suffixed with -shadow.\nStructure is documented below.\n"
                },
                "retryPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionRetryPolicy:URLMapPathMatcherDefaultRouteActionRetryPolicy",
                    "description": "Specifies the retry policy associated with this route.\nStructure is documented below.\n"
                },
                "timeout": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionTimeout:URLMapPathMatcherDefaultRouteActionTimeout",
                    "description": "Specifies the timeout for the selected route. Timeout is computed from the time the request has been\nfully processed (i.e. end-of-stream) up until the response has been completely processed. Timeout includes all retries.\nIf not specified, will use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "urlRewrite": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionUrlRewrite:URLMapPathMatcherDefaultRouteActionUrlRewrite",
                    "description": "The spec to modify the URL of the request, prior to forwarding the request to the matched service.\nStructure is documented below.\n"
                },
                "weightedBackendServices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionWeightedBackendService:URLMapPathMatcherDefaultRouteActionWeightedBackendService"
                    },
                    "description": "A list of weighted backend services to send traffic to when a route match occurs.\nThe weights determine the fraction of traffic that flows to their corresponding backend service.\nIf all traffic needs to go to a single backend service, there must be one weightedBackendService\nwith weight set to a non 0 number.\nOnce a backendService is identified and before forwarding the request to the backend service,\nadvanced routing actions like Url rewrites and header transformations are applied depending on\nadditional settings specified in this HttpRouteAction.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxStreamDuration",
                        "timeout"
                    ]
                }
            }
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicy:URLMapPathMatcherDefaultRouteActionCachePolicy": {
            "properties": {
                "cacheBypassRequestHeaderNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Bypass the cache when the specified request headers are matched by name,\ne.g. Pragma or Authorization headers. Values are case-insensitive. Up to 5\nheader names can be specified. The cache is bypassed for all cacheMode\nvalues.\n"
                },
                "cacheKeyPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyCacheKeyPolicy:URLMapPathMatcherDefaultRouteActionCachePolicyCacheKeyPolicy",
                    "description": "The cache key configuration. If not specified, the default behavior depends\non the backend type: for Backend Services, the complete request URI is\nused; for Backend Buckets, the request URI is used without the protocol or\nhost, and only query parameters known to Cloud Storage are included.\nStructure is documented below.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this route. If not\nspecified, Cloud CDN uses CACHE_ALL_STATIC mode.\nPossible values are: `USE_ORIGIN_HEADERS`, `FORCE_CACHE_ALL`, `CACHE_ALL_STATIC`.\n"
                },
                "clientTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyClientTtl:URLMapPathMatcherDefaultRouteActionCachePolicyClientTtl",
                    "description": "Specifies a separate client (e.g. browser client) maximum TTL for cached\ncontent. This is used to clamp the max-age (or Expires) value sent to the\nclient. With FORCE_CACHE_ALL, the lesser of clientTtl and defaultTtl\nis used for the response max-age directive, along with a \"public\"\ndirective. For cacheable content in CACHE_ALL_STATIC mode, clientTtl\nclamps the max-age from the origin (if specified), or else sets the\nresponse max-age directive to the lesser of the clientTtl and defaultTtl,\nand also ensures a \"public\" cache-control directive is present. The maximum\nallowed value is 31,622,400s (1 year). If not specified, Cloud CDN uses\n3600s (1 hour) for CACHE_ALL_STATIC mode. Cannot exceed maxTtl.\nCannot be specified when cacheMode is USE_ORIGIN_HEADERS.\nStructure is documented below.\n"
                },
                "defaultTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyDefaultTtl:URLMapPathMatcherDefaultRouteActionCachePolicyDefaultTtl",
                    "description": "Specifies the default TTL for cached content for responses that do not have\nan existing valid TTL (max-age or s-maxage). Setting a TTL of \"0\" means\n\"always revalidate\". The value of defaultTtl cannot be set to a value\ngreater than that of maxTtl. When the cacheMode is set to\nFORCE_CACHE_ALL, the defaultTtl will overwrite the TTL set in all\nresponses. The maximum allowed value is 31,622,400s (1 year). Infrequently\naccessed objects may be evicted from the cache before the defined TTL. If\nnot specified, Cloud CDN uses 3600s (1 hour) for CACHE_ALL_STATIC and\nFORCE_CACHE_ALL modes. Cannot be specified when cacheMode is\nUSE_ORIGIN_HEADERS.\nStructure is documented below.\n"
                },
                "maxTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyMaxTtl:URLMapPathMatcherDefaultRouteActionCachePolicyMaxTtl",
                    "description": "Specifies the maximum allowed TTL for cached content. Cache directives that\nattempt to set a max-age or s-maxage higher than this, or an Expires header\nmore than maxTtl seconds in the future will be capped at the value of\nmaxTtl, as if it were the value of an s-maxage Cache-Control directive.\nHeaders sent to the client will not be modified. Setting a TTL of \"0\" means\n\"always revalidate\". The maximum allowed value is 31,622,400s (1 year).\nInfrequently accessed objects may be evicted from the cache before the\ndefined TTL. If not specified, Cloud CDN uses 86400s (1 day) for\nCACHE_ALL_STATIC mode. Can be specified only for CACHE_ALL_STATIC cache\nmode.\nStructure is documented below.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply\nfine-grained caching for common errors or redirects. This can reduce the\nload on your origin and improve end-user experience by reducing response\nlatency. When the cacheMode is set to CACHE_ALL_STATIC or\nUSE_ORIGIN_HEADERS, negative caching applies to responses with the\nspecified response code that lack any Cache-Control, Expires, or\nPragma: no-cache directives. When the cacheMode is set to\nFORCE_CACHE_ALL, negative caching applies to all responses with the\nspecified response code, and overrides any caching headers. By default,\nCloud CDN applies the following TTLs to these HTTP status codes:\n* 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m\n* 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s\n* 405 (Method Not Found), 501 (Not Implemented): 60s\nThese defaults can be overridden in negativeCachingPolicy. If not\nspecified, Cloud CDN applies negative caching by default.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyNegativeCachingPolicy:URLMapPathMatcherDefaultRouteActionCachePolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching\nmust be enabled to configure negativeCachingPolicy. Omitting the policy\nand leaving negativeCaching enabled will use Cloud CDN's default cache\nTTLs. Note that when specifying an explicit negativeCachingPolicy, you\nshould take care to specify a cache TTL for all response codes that you\nwish to cache. Cloud CDN will not apply any default negative caching when\na policy exists.\nStructure is documented below.\n"
                },
                "requestCoalescing": {
                    "type": "boolean",
                    "description": "If true then Cloud CDN will combine multiple concurrent cache fill\nrequests into a small number of requests to the origin. If not specified,\nCloud CDN applies request coalescing by default.\n"
                },
                "serveWhileStale": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyServeWhileStale:URLMapPathMatcherDefaultRouteActionCachePolicyServeWhileStale",
                    "description": "Serve existing content from the cache (if available) when revalidating\ncontent with the origin, or when an error is encountered when refreshing\nthe cache. This setting defines the default \"max-stale\" duration for any\ncached responses that do not specify a max-stale directive. Stale\nresponses that exceed the TTL configured here will not be served. The\ndefault limit (max-stale) is 86400s (1 day), which will allow stale\ncontent to be served up to this limit beyond the max-age (or s-maxage) of\na cached response. The maximum allowed value is 604800 (1 week). Set this\nto zero (0) to disable serve-while-stale.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyCacheKeyPolicy:URLMapPathMatcherDefaultRouteActionCachePolicyCacheKeyPolicy": {
            "properties": {
                "excludedQueryParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to exclude in cache keys. All other\nparameters will be included. Either specify excludedQueryParameters\nor includedQueryParameters, not both. '\u0026' and '=' will be percent\nencoded and not treated as delimiters. Note: This field applies to\nroutes that use backend services. Attempting to set it on a route that\npoints exclusively to Backend Buckets will result in a configuration\nerror. For routes that point to a Backend Bucket, use\nincludedQueryParameters to define which parameters should be part of\nthe cache key.\n"
                },
                "includeHost": {
                    "type": "boolean",
                    "description": "If true, requests to different hosts will be cached separately. Note:\nThis setting is only applicable to routes that use a Backend Service.\nIt does not affect requests served by a Backend Bucket, as the host is\nnever included in a Backend Bucket's cache key. Attempting to set it on\na route that points exclusively to Backend Buckets will result in a\nconfiguration error.\n"
                },
                "includeProtocol": {
                    "type": "boolean",
                    "description": "If true, http and https requests will be cached separately. Note: This\nsetting is only applicable to routes that use a Backend Service. It\ndoes not affect requests served by a Backend Bucket, as the protocol is\nnever included in a Backend Bucket's cache key. Attempting to set on a\nroute that points exclusively to Backend Buckets will result in a\nconfiguration error.\n"
                },
                "includeQueryString": {
                    "type": "boolean",
                    "description": "If true, include query string parameters in the cache key according to\nincludedQueryParameters and excludedQueryParameters. If neither is\nset, the entire query string will be included. If false, the query\nstring will be excluded from the cache key entirely. Note: This field\napplies to routes that use backend services. Attempting to set it on a\nroute that points exclusively to Backend Buckets will result in a\nconfiguration error. For routes that point to a Backend Bucket, use\nincludedQueryParameters to define which parameters should be part of\nthe cache key.\n"
                },
                "includedCookieNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP cookies (by name) to be used in the cache key. The\nname=value pair will be used in the cache key Cloud CDN generates.\nNote: This setting is only applicable to routes that use a Backend\nService. It does not affect requests served by a Backend Bucket.\nAttempting to set it on a route that points exclusively to Backend\nBuckets will result in a configuration error. Up to 5 cookie names can\nbe specified.\n"
                },
                "includedHeaderNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP request headers (by name) to be used in the cache key.\n"
                },
                "includedQueryParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys. All other\nparameters will be excluded. Either specify includedQueryParameters\nor excludedQueryParameters, not both. '\u0026' and '=' will be percent\nencoded and not treated as delimiters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyClientTtl:URLMapPathMatcherDefaultRouteActionCachePolicyClientTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyDefaultTtl:URLMapPathMatcherDefaultRouteActionCachePolicyDefaultTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyMaxTtl:URLMapPathMatcherDefaultRouteActionCachePolicyMaxTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyNegativeCachingPolicy:URLMapPathMatcherDefaultRouteActionCachePolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes\n300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 can be\nspecified as values, and you cannot specify a status code more than\nonce.\n"
                },
                "ttl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyNegativeCachingPolicyTtl:URLMapPathMatcherDefaultRouteActionCachePolicyNegativeCachingPolicyTtl",
                    "description": "The TTL (in seconds) for which to cache responses with the\ncorresponding status code. The maximum allowed value is 1800s (30\nminutes). Infrequently accessed objects may be evicted from the cache\nbefore the defined TTL.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyNegativeCachingPolicyTtl:URLMapPathMatcherDefaultRouteActionCachePolicyNegativeCachingPolicyTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCachePolicyServeWhileStale:URLMapPathMatcherDefaultRouteActionCachePolicyServeWhileStale": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionCorsPolicy:URLMapPathMatcherDefaultRouteActionCorsPolicy": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials.\nThis translates to the Access-Control-Allow-Credentials header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Methods header.\n"
                },
                "allowOriginRegexes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "allowOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "integer",
                    "description": "Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionFaultInjectionPolicy:URLMapPathMatcherDefaultRouteActionFaultInjectionPolicy": {
            "properties": {
                "abort": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyAbort:URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyAbort",
                    "description": "The specification for how client requests are aborted as part of fault injection.\nStructure is documented below.\n"
                },
                "delay": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelay:URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelay",
                    "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyAbort:URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyAbort": {
            "properties": {
                "httpStatus": {
                    "type": "integer",
                    "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelay:URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelay": {
            "properties": {
                "fixedDelay": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelayFixedDelay:URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelayFixedDelay",
                    "description": "Specifies the value of the fixed delay interval.\nStructure is documented below.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelayFixedDelay:URLMapPathMatcherDefaultRouteActionFaultInjectionPolicyDelayFixedDelay": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionMaxStreamDuration:URLMapPathMatcherDefaultRouteActionMaxStreamDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionRequestMirrorPolicy:URLMapPathMatcherDefaultRouteActionRequestMirrorPolicy": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the BackendService resource being mirrored to.\n"
                },
                "mirrorPercent": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe percentage of requests to be mirrored to backendService.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService"
            ]
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionRetryPolicy:URLMapPathMatcherDefaultRouteActionRetryPolicy": {
            "properties": {
                "numRetries": {
                    "type": "integer",
                    "description": "Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.\n"
                },
                "perTryTimeout": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionRetryPolicyPerTryTimeout:URLMapPathMatcherDefaultRouteActionRetryPolicyPerTryTimeout",
                    "description": "Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "retryConditions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specfies one or more conditions when this retry rule applies. Valid values are:\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with any 5xx response code,\nor if the backend service does not respond at all, example: disconnects, reset, read timeout,\n* connection failure, and refused streams.\n* gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures connecting to backend services,\nfor example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\nCurrently the only retriable error supported is 409.\n* refused-stream:Loadbalancer will retry if the backend service resets the stream with a REFUSED_STREAM error code.\nThis reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response header is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the gRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response header is set to resource-exhausted\n* unavailable: Loadbalancer will retry if the gRPC status code in the response header is set to unavailable\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionRetryPolicyPerTryTimeout:URLMapPathMatcherDefaultRouteActionRetryPolicyPerTryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionTimeout:URLMapPathMatcherDefaultRouteActionTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionUrlRewrite:URLMapPathMatcherDefaultRouteActionUrlRewrite": {
            "properties": {
                "hostRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected service, the request's host header is replaced\nwith contents of hostRewrite.\nThe value must be between 1 and 255 characters.\n"
                },
                "pathPrefixRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected backend service, the matching portion of the\nrequest's path is replaced by pathPrefixRewrite.\nThe value must be between 1 and 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionWeightedBackendService:URLMapPathMatcherDefaultRouteActionWeightedBackendService": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the default BackendService resource. Before forwarding the\nrequest to backendService, the loadbalancer applies any relevant headerActions\nspecified as part of this backendServiceWeight.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderAction:URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for\nthe selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing\nHttpRouteRule, PathMatcher and UrlMap.\nStructure is documented below.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Specifies the fraction of traffic sent to backendService, computed as\nweight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request\nhas been directed to a backendService, subsequent requests will be sent to the same backendService\nas determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderAction:URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request prior to forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response prior to sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:URLMapPathMatcherDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherDefaultUrlRedirect:URLMapPathMatcherDefaultUrlRedirect": {
            "properties": {
                "hostRedirect": {
                    "type": "string",
                    "description": "The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.\n"
                },
                "httpsRedirect": {
                    "type": "boolean",
                    "description": "If set to true, the URL scheme in the redirected request is set to https. If set to\nfalse, the URL scheme of the redirected request will remain the same as that of the\nrequest. This must only be set for UrlMaps used in TargetHttpProxys. Setting this\ntrue for TargetHttpsProxy is not permitted. The default is set to false.\n"
                },
                "pathRedirect": {
                    "type": "string",
                    "description": "The path that will be used in the redirect response instead of the one that was\nsupplied in the request. pathRedirect cannot be supplied together with\nprefixRedirect. Supply one alone or neither. If neither is supplied, the path of the\noriginal request will be used for the redirect. The value must be between 1 and 1024\ncharacters.\n"
                },
                "prefixRedirect": {
                    "type": "string",
                    "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\nprefixRedirect cannot be supplied together with pathRedirect. Supply one alone or\nneither. If neither is supplied, the path of the original request will be used for\nthe redirect. The value must be between 1 and 1024 characters.\n"
                },
                "redirectResponseCode": {
                    "type": "string",
                    "description": "The HTTP Status code to use for this RedirectAction. Supported values are:\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n* FOUND, which corresponds to 302.\n* SEE_OTHER which corresponds to 303.\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained.\n"
                },
                "stripQuery": {
                    "type": "boolean",
                    "description": "If set to true, any accompanying query portion of the original URL is removed prior\nto redirecting the request. If set to false, the query portion of the original URL is\nretained. The default is set to false.\nThis field is required to ensure an empty block is not set. The normal default value is false.\n"
                }
            },
            "type": "object",
            "required": [
                "stripQuery"
            ]
        },
        "gcp:compute/URLMapPathMatcherHeaderAction:URLMapPathMatcherHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherHeaderActionRequestHeadersToAdd:URLMapPathMatcherHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request prior to forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherHeaderActionResponseHeadersToAdd:URLMapPathMatcherHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response prior to sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherHeaderActionRequestHeadersToAdd:URLMapPathMatcherHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapPathMatcherHeaderActionResponseHeadersToAdd:URLMapPathMatcherHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRule:URLMapPathMatcherPathRule": {
            "properties": {
                "customErrorResponsePolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleCustomErrorResponsePolicy:URLMapPathMatcherPathRuleCustomErrorResponsePolicy",
                    "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendService or BackendBucket responds with an error.\nIf a policy for an error code is not configured for the PathRule, a policy for the error code configured in pathMatcher.defaultCustomErrorResponsePolicy is applied. If one is not specified in pathMatcher.defaultCustomErrorResponsePolicy, the policy configured in UrlMap.defaultCustomErrorResponsePolicy takes effect.\nFor example, consider a UrlMap with the following configuration:\nUrlMap.defaultCustomErrorResponsePolicy are configured with policies for 5xx and 4xx errors\nA PathRule for /coming_soon/ is configured for the error code 404.\nIf the request is for www.myotherdomain.com and a 404 is encountered, the policy under UrlMap.defaultCustomErrorResponsePolicy takes effect. If a 404 response is encountered for the request www.example.com/current_events/, the pathMatcher's policy takes effect. If however, the request for www.example.com/coming_soon/ encounters a 404, the policy in PathRule.customErrorResponsePolicy takes effect. If any of the requests in this example encounter a 500 error code, the policy at UrlMap.defaultCustomErrorResponsePolicy takes effect.\ncustomErrorResponsePolicy is supported only for global external Application Load Balancers.\nStructure is documented below.\n"
                },
                "paths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of path patterns to match. Each must start with / and the only place a\n\\* is allowed is at the end following a /. The string fed to the path matcher\ndoes not include any text after the first ? or #, and those chars are not\nallowed here.\n"
                },
                "routeAction": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteAction:URLMapPathMatcherPathRuleRouteAction",
                    "description": "In response to a matching path, the load balancer performs advanced routing\nactions like URL rewrites, header transformations, etc. prior to forwarding the\nrequest to the selected backend. If routeAction specifies any\nweightedBackendServices, service must not be set. Conversely if service is set,\nrouteAction cannot contain any  weightedBackendServices. Only one of routeAction\nor urlRedirect must be set.\nStructure is documented below.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The backend service or backend bucket to use if any of the given paths match.\n"
                },
                "urlRedirect": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleUrlRedirect:URLMapPathMatcherPathRuleUrlRedirect",
                    "description": "When a path pattern is matched, the request is redirected to a URL specified\nby urlRedirect. If urlRedirect is specified, service or routeAction must not\nbe set.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "paths"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleCustomErrorResponsePolicy:URLMapPathMatcherPathRuleCustomErrorResponsePolicy": {
            "properties": {
                "errorResponseRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRule:URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRule"
                    },
                    "description": "Specifies rules for returning error responses.\nIn a given policy, if you specify rules for both a range of error codes as well as rules for specific error codes then rules with specific error codes have a higher priority.\nFor example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX).\nIf the backend service returns a 401, then the rule for 401 will be applied. However if the backend service returns a 403, the rule for 4xx takes effect.\nStructure is documented below.\n"
                },
                "errorService": {
                    "type": "string",
                    "description": "The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are:\nhttps://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket\ncompute/v1/projects/project/global/backendBuckets/myBackendBucket\nglobal/backendBuckets/myBackendBucket\nIf errorService is not specified at lower levels like pathMatcher, pathRule and routeRule, an errorService specified at a higher level in the UrlMap will be used. If UrlMap.defaultCustomErrorResponsePolicy contains one or more errorResponseRules[], it must specify errorService.\nIf load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured).\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRule:URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRule": {
            "properties": {
                "matchResponseCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Valid values include:\n- A number between 400 and 599: For example 401 or 503, in which case the load balancer applies the policy if the error code exactly matches this value.\n- 5xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 500 to 599.\n- 4xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 400 to 499.\nValues must be unique within matchResponseCodes and across all errorResponseRules of CustomErrorResponsePolicy.\n"
                },
                "overrideResponseCode": {
                    "type": "integer",
                    "description": "The HTTP status code returned with the response containing the custom error content.\nIf overrideResponseCode is not supplied, the same response code returned by the original backend bucket or backend service is returned to the client.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The full path to a file within backendBucket. For example: /errors/defaultError.html\npath must start with a leading slash. path cannot have trailing slashes.\nIf the file is not available in backendBucket or the load balancer cannot reach the BackendBucket, a simple Not Found Error is returned to the client.\nThe value must be from 1 to 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteAction:URLMapPathMatcherPathRuleRouteAction": {
            "properties": {
                "cachePolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicy:URLMapPathMatcherPathRuleRouteActionCachePolicy",
                    "description": "Specifies the cache policy configuration for matched traffic. Available\nonly for Global EXTERNAL_MANAGED load balancer schemes. At least one\nproperty must be specified. This policy cannot be specified if any target\nbackend has Identity-Aware Proxy enabled.\nStructure is documented below.\n"
                },
                "corsPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCorsPolicy:URLMapPathMatcherPathRuleRouteActionCorsPolicy",
                    "description": "The specification for allowing client side cross-origin requests. Please see W3C\nRecommendation for Cross Origin Resource Sharing\nStructure is documented below.\n"
                },
                "faultInjectionPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicy:URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicy",
                    "description": "The specification for fault injection introduced into traffic to test the\nresiliency of clients to backend service failure. As part of fault injection,\nwhen clients send requests to a backend service, delays can be introduced by\nLoadbalancer on a percentage of requests before sending those request to the\nbackend service. Similarly requests from clients can be aborted by the\nLoadbalancer for a percentage of requests. timeout and\u003cspan pulumi-lang-nodejs=\" retryPolicy \" pulumi-lang-dotnet=\" RetryPolicy \" pulumi-lang-go=\" retryPolicy \" pulumi-lang-python=\" retry_policy \" pulumi-lang-yaml=\" retryPolicy \" pulumi-lang-java=\" retryPolicy \" pulumi-lang-hcl=\" retry_policy \"\u003e retryPolicy \u003c/span\u003ewill be\nignored by clients that are configured with a fault_injection_policy.\nStructure is documented below.\n"
                },
                "maxStreamDuration": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionMaxStreamDuration:URLMapPathMatcherPathRuleRouteActionMaxStreamDuration",
                    "description": "Specifies the maximum duration (timeout) for streams on the selected route.\nUnlike the `Timeout` field where the timeout duration starts from the time the request\nhas been fully processed (known as end-of-stream), the duration in this field\nis computed from the beginning of the stream until the response has been processed,\nincluding all retries. A stream that does not complete in this duration is closed.\nStructure is documented below.\n"
                },
                "requestMirrorPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicy:URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicy",
                    "description": "Specifies the policy on how requests intended for the route's backends are\nshadowed to a separate mirrored backend service. Loadbalancer does not wait for\nresponses from the shadow service. Prior to sending traffic to the shadow\nservice, the host / authority header is suffixed with -shadow.\nStructure is documented below.\n"
                },
                "retryPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionRetryPolicy:URLMapPathMatcherPathRuleRouteActionRetryPolicy",
                    "description": "Specifies the retry policy associated with this route.\nStructure is documented below.\n"
                },
                "timeout": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionTimeout:URLMapPathMatcherPathRuleRouteActionTimeout",
                    "description": "Specifies the timeout for the selected route. Timeout is computed from the time\nthe request is has been fully processed (i.e. end-of-stream) up until the\nresponse has been completely processed. Timeout includes all retries. If not\nspecified, the default value is 15 seconds.\nStructure is documented below.\n"
                },
                "urlRewrite": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionUrlRewrite:URLMapPathMatcherPathRuleRouteActionUrlRewrite",
                    "description": "The spec to modify the URL of the request, prior to forwarding the request to\nthe matched service\nStructure is documented below.\n"
                },
                "weightedBackendServices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionWeightedBackendService:URLMapPathMatcherPathRuleRouteActionWeightedBackendService"
                    },
                    "description": "A list of weighted backend services to send traffic to when a route match\noccurs. The weights determine the fraction of traffic that flows to their\ncorresponding backend service. If all traffic needs to go to a single backend\nservice, there must be one  weightedBackendService with weight set to a non 0\nnumber. Once a backendService is identified and before forwarding the request to\nthe backend service, advanced routing actions like Url rewrites and header\ntransformations are applied depending on additional settings specified in this\nHttpRouteAction.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxStreamDuration"
                    ]
                }
            }
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicy:URLMapPathMatcherPathRuleRouteActionCachePolicy": {
            "properties": {
                "cacheBypassRequestHeaderNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Bypass the cache when the specified request headers are matched by name,\ne.g. Pragma or Authorization headers. Values are case-insensitive. Up to 5\nheader names can be specified. The cache is bypassed for all cacheMode\nvalues.\n"
                },
                "cacheKeyPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyCacheKeyPolicy:URLMapPathMatcherPathRuleRouteActionCachePolicyCacheKeyPolicy",
                    "description": "The cache key configuration. If not specified, the default behavior depends\non the backend type: for Backend Services, the complete request URI is\nused; for Backend Buckets, the request URI is used without the protocol or\nhost, and only query parameters known to Cloud Storage are included.\nStructure is documented below.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this route. If not\nspecified, Cloud CDN uses CACHE_ALL_STATIC mode.\nPossible values are: `USE_ORIGIN_HEADERS`, `FORCE_CACHE_ALL`, `CACHE_ALL_STATIC`.\n"
                },
                "clientTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyClientTtl:URLMapPathMatcherPathRuleRouteActionCachePolicyClientTtl",
                    "description": "Specifies a separate client (e.g. browser client) maximum TTL for cached\ncontent. This is used to clamp the max-age (or Expires) value sent to the\nclient. With FORCE_CACHE_ALL, the lesser of clientTtl and defaultTtl\nis used for the response max-age directive, along with a \"public\"\ndirective. For cacheable content in CACHE_ALL_STATIC mode, clientTtl\nclamps the max-age from the origin (if specified), or else sets the\nresponse max-age directive to the lesser of the clientTtl and defaultTtl,\nand also ensures a \"public\" cache-control directive is present. The maximum\nallowed value is 31,622,400s (1 year). If not specified, Cloud CDN uses\n3600s (1 hour) for CACHE_ALL_STATIC mode. Cannot exceed maxTtl.\nCannot be specified when cacheMode is USE_ORIGIN_HEADERS.\nStructure is documented below.\n"
                },
                "defaultTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyDefaultTtl:URLMapPathMatcherPathRuleRouteActionCachePolicyDefaultTtl",
                    "description": "Specifies the default TTL for cached content for responses that do not have\nan existing valid TTL (max-age or s-maxage). Setting a TTL of \"0\" means\n\"always revalidate\". The value of defaultTtl cannot be set to a value\ngreater than that of maxTtl. When the cacheMode is set to\nFORCE_CACHE_ALL, the defaultTtl will overwrite the TTL set in all\nresponses. The maximum allowed value is 31,622,400s (1 year). Infrequently\naccessed objects may be evicted from the cache before the defined TTL. If\nnot specified, Cloud CDN uses 3600s (1 hour) for CACHE_ALL_STATIC and\nFORCE_CACHE_ALL modes. Cannot be specified when cacheMode is\nUSE_ORIGIN_HEADERS.\nStructure is documented below.\n"
                },
                "maxTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyMaxTtl:URLMapPathMatcherPathRuleRouteActionCachePolicyMaxTtl",
                    "description": "Specifies the maximum allowed TTL for cached content. Cache directives that\nattempt to set a max-age or s-maxage higher than this, or an Expires header\nmore than maxTtl seconds in the future will be capped at the value of\nmaxTtl, as if it were the value of an s-maxage Cache-Control directive.\nHeaders sent to the client will not be modified. Setting a TTL of \"0\" means\n\"always revalidate\". The maximum allowed value is 31,622,400s (1 year).\nInfrequently accessed objects may be evicted from the cache before the\ndefined TTL. If not specified, Cloud CDN uses 86400s (1 day) for\nCACHE_ALL_STATIC mode. Can be specified only for CACHE_ALL_STATIC cache\nmode.\nStructure is documented below.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply\nfine-grained caching for common errors or redirects. This can reduce the\nload on your origin and improve end-user experience by reducing response\nlatency. When the cacheMode is set to CACHE_ALL_STATIC or\nUSE_ORIGIN_HEADERS, negative caching applies to responses with the\nspecified response code that lack any Cache-Control, Expires, or\nPragma: no-cache directives. When the cacheMode is set to\nFORCE_CACHE_ALL, negative caching applies to all responses with the\nspecified response code, and overrides any caching headers. By default,\nCloud CDN applies the following TTLs to these HTTP status codes:\n* 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m\n* 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s\n* 405 (Method Not Found), 501 (Not Implemented): 60s\nThese defaults can be overridden in negativeCachingPolicy. If not\nspecified, Cloud CDN applies negative caching by default.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyNegativeCachingPolicy:URLMapPathMatcherPathRuleRouteActionCachePolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching\nmust be enabled to configure negativeCachingPolicy. Omitting the policy\nand leaving negativeCaching enabled will use Cloud CDN's default cache\nTTLs. Note that when specifying an explicit negativeCachingPolicy, you\nshould take care to specify a cache TTL for all response codes that you\nwish to cache. Cloud CDN will not apply any default negative caching when\na policy exists.\nStructure is documented below.\n"
                },
                "requestCoalescing": {
                    "type": "boolean",
                    "description": "If true then Cloud CDN will combine multiple concurrent cache fill\nrequests into a small number of requests to the origin. If not specified,\nCloud CDN applies request coalescing by default.\n"
                },
                "serveWhileStale": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyServeWhileStale:URLMapPathMatcherPathRuleRouteActionCachePolicyServeWhileStale",
                    "description": "Serve existing content from the cache (if available) when revalidating\ncontent with the origin, or when an error is encountered when refreshing\nthe cache. This setting defines the default \"max-stale\" duration for any\ncached responses that do not specify a max-stale directive. Stale\nresponses that exceed the TTL configured here will not be served. The\ndefault limit (max-stale) is 86400s (1 day), which will allow stale\ncontent to be served up to this limit beyond the max-age (or s-maxage) of\na cached response. The maximum allowed value is 604800 (1 week). Set this\nto zero (0) to disable serve-while-stale.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyCacheKeyPolicy:URLMapPathMatcherPathRuleRouteActionCachePolicyCacheKeyPolicy": {
            "properties": {
                "excludedQueryParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to exclude in cache keys. All other\nparameters will be included. Either specify excludedQueryParameters\nor includedQueryParameters, not both. '\u0026' and '=' will be percent\nencoded and not treated as delimiters. Note: This field applies to\nroutes that use backend services. Attempting to set it on a route that\npoints exclusively to Backend Buckets will result in a configuration\nerror. For routes that point to a Backend Bucket, use\nincludedQueryParameters to define which parameters should be part of\nthe cache key.\n"
                },
                "includeHost": {
                    "type": "boolean",
                    "description": "If true, requests to different hosts will be cached separately. Note:\nThis setting is only applicable to routes that use a Backend Service.\nIt does not affect requests served by a Backend Bucket, as the host is\nnever included in a Backend Bucket's cache key. Attempting to set it on\na route that points exclusively to Backend Buckets will result in a\nconfiguration error.\n"
                },
                "includeProtocol": {
                    "type": "boolean",
                    "description": "If true, http and https requests will be cached separately. Note: This\nsetting is only applicable to routes that use a Backend Service. It\ndoes not affect requests served by a Backend Bucket, as the protocol is\nnever included in a Backend Bucket's cache key. Attempting to set on a\nroute that points exclusively to Backend Buckets will result in a\nconfiguration error.\n"
                },
                "includeQueryString": {
                    "type": "boolean",
                    "description": "If true, include query string parameters in the cache key according to\nincludedQueryParameters and excludedQueryParameters. If neither is\nset, the entire query string will be included. If false, the query\nstring will be excluded from the cache key entirely. Note: This field\napplies to routes that use backend services. Attempting to set it on a\nroute that points exclusively to Backend Buckets will result in a\nconfiguration error. For routes that point to a Backend Bucket, use\nincludedQueryParameters to define which parameters should be part of\nthe cache key.\n"
                },
                "includedCookieNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP cookies (by name) to be used in the cache key. The\nname=value pair will be used in the cache key Cloud CDN generates.\nNote: This setting is only applicable to routes that use a Backend\nService. It does not affect requests served by a Backend Bucket.\nAttempting to set it on a route that points exclusively to Backend\nBuckets will result in a configuration error. Up to 5 cookie names can\nbe specified.\n"
                },
                "includedHeaderNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP request headers (by name) to be used in the cache key.\n"
                },
                "includedQueryParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys. All other\nparameters will be excluded. Either specify includedQueryParameters\nor excludedQueryParameters, not both. '\u0026' and '=' will be percent\nencoded and not treated as delimiters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyClientTtl:URLMapPathMatcherPathRuleRouteActionCachePolicyClientTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyDefaultTtl:URLMapPathMatcherPathRuleRouteActionCachePolicyDefaultTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyMaxTtl:URLMapPathMatcherPathRuleRouteActionCachePolicyMaxTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyNegativeCachingPolicy:URLMapPathMatcherPathRuleRouteActionCachePolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes\n300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 can be\nspecified as values, and you cannot specify a status code more than\nonce.\n"
                },
                "ttl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyNegativeCachingPolicyTtl:URLMapPathMatcherPathRuleRouteActionCachePolicyNegativeCachingPolicyTtl",
                    "description": "The TTL (in seconds) for which to cache responses with the\ncorresponding status code. The maximum allowed value is 1800s (30\nminutes). Infrequently accessed objects may be evicted from the cache\nbefore the defined TTL.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyNegativeCachingPolicyTtl:URLMapPathMatcherPathRuleRouteActionCachePolicyNegativeCachingPolicyTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCachePolicyServeWhileStale:URLMapPathMatcherPathRuleRouteActionCachePolicyServeWhileStale": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionCorsPolicy:URLMapPathMatcherPathRuleRouteActionCorsPolicy": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials.\nThis translates to the Access-Control-Allow-Credentials header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Methods header.\n"
                },
                "allowOriginRegexes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "allowOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "integer",
                    "description": "Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.\n"
                }
            },
            "type": "object",
            "required": [
                "disabled"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicy:URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicy": {
            "properties": {
                "abort": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbort:URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbort",
                    "description": "The specification for how client requests are aborted as part of fault injection.\nStructure is documented below.\n"
                },
                "delay": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelay:URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelay",
                    "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbort:URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbort": {
            "properties": {
                "httpStatus": {
                    "type": "integer",
                    "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "httpStatus",
                "percentage"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelay:URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelay": {
            "properties": {
                "fixedDelay": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelay:URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelay",
                    "description": "Specifies the value of the fixed delay interval.\nStructure is documented below.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "fixedDelay",
                "percentage"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelay:URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelay": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionMaxStreamDuration:URLMapPathMatcherPathRuleRouteActionMaxStreamDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicy:URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicy": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the BackendService resource being mirrored to.\n"
                },
                "mirrorPercent": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe percentage of requests to be mirrored to backendService.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionRetryPolicy:URLMapPathMatcherPathRuleRouteActionRetryPolicy": {
            "properties": {
                "numRetries": {
                    "type": "integer",
                    "description": "Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.\n"
                },
                "perTryTimeout": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeout:URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeout",
                    "description": "Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "retryConditions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specfies one or more conditions when this retry rule applies. Valid values are:\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with any 5xx response code,\nor if the backend service does not respond at all, example: disconnects, reset, read timeout,\n* connection failure, and refused streams.\n* gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures connecting to backend services,\nfor example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\nCurrently the only retriable error supported is 409.\n* refused-stream:Loadbalancer will retry if the backend service resets the stream with a REFUSED_STREAM error code.\nThis reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response header is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the gRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response header is set to resource-exhausted\n* unavailable: Loadbalancer will retry if the gRPC status code in the response header is set to unavailable\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeout:URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionTimeout:URLMapPathMatcherPathRuleRouteActionTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionUrlRewrite:URLMapPathMatcherPathRuleRouteActionUrlRewrite": {
            "properties": {
                "hostRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected service, the request's host header is replaced\nwith contents of hostRewrite.\nThe value must be between 1 and 255 characters.\n"
                },
                "pathPrefixRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected backend service, the matching portion of the\nrequest's path is replaced by pathPrefixRewrite.\nThe value must be between 1 and 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionWeightedBackendService:URLMapPathMatcherPathRuleRouteActionWeightedBackendService": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the default BackendService resource. Before forwarding the\nrequest to backendService, the loadbalancer applies any relevant headerActions\nspecified as part of this backendServiceWeight.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderAction:URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for\nthe selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing\nHttpRouteRule, PathMatcher and UrlMap.\nStructure is documented below.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Specifies the fraction of traffic sent to backendService, computed as\nweight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request\nhas been directed to a backendService, subsequent requests will be sent to the same backendService\nas determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000\n"
                }
            },
            "type": "object",
            "required": [
                "backendService",
                "weight"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderAction:URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request prior to forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response prior to sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapPathMatcherPathRuleUrlRedirect:URLMapPathMatcherPathRuleUrlRedirect": {
            "properties": {
                "hostRedirect": {
                    "type": "string",
                    "description": "The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.\n"
                },
                "httpsRedirect": {
                    "type": "boolean",
                    "description": "If set to true, the URL scheme in the redirected request is set to https. If set\nto false, the URL scheme of the redirected request will remain the same as that\nof the request. This must only be set for UrlMaps used in TargetHttpProxys.\nSetting this true for TargetHttpsProxy is not permitted. Defaults to false.\n"
                },
                "pathRedirect": {
                    "type": "string",
                    "description": "The path that will be used in the redirect response instead of the one that was\nsupplied in the request. Only one of pathRedirect or prefixRedirect must be\nspecified. The value must be between 1 and 1024 characters.\n"
                },
                "prefixRedirect": {
                    "type": "string",
                    "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\n"
                },
                "redirectResponseCode": {
                    "type": "string",
                    "description": "The HTTP Status code to use for this RedirectAction. Supported values are:\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n* FOUND, which corresponds to 302.\n* SEE_OTHER which corresponds to 303.\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method will be retained.\n* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method will be retained.\n"
                },
                "stripQuery": {
                    "type": "boolean",
                    "description": "If set to true, any accompanying query portion of the original URL is removed\nprior to redirecting the request. If set to false, the query portion of the\noriginal URL is retained. Defaults to false.\n"
                }
            },
            "type": "object",
            "required": [
                "stripQuery"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRule:URLMapPathMatcherRouteRule": {
            "properties": {
                "customErrorResponsePolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleCustomErrorResponsePolicy:URLMapPathMatcherRouteRuleCustomErrorResponsePolicy",
                    "description": "customErrorResponsePolicy specifies how the Load Balancer returns error responses when BackendService or BackendBucket responds with an error.\nStructure is documented below.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleHeaderAction:URLMapPathMatcherRouteRuleHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for\nthe selected backendService. The headerAction specified here are applied before\nthe matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r\nouteAction.weightedBackendService.backendServiceWeightAction[].headerAction\nStructure is documented below.\n"
                },
                "httpFilterConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleHttpFilterConfig:URLMapPathMatcherRouteRuleHttpFilterConfig"
                    },
                    "description": "(Optional, Beta)\nOutbound route specific configuration for networkservices.HttpFilter resources enabled by Traffic Director.\nhttpFilterConfigs only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED.\nSee ForwardingRule for more details.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "httpFilterMetadatas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleHttpFilterMetadata:URLMapPathMatcherRouteRuleHttpFilterMetadata"
                    },
                    "description": "(Optional, Beta)\nOutbound route specific metadata supplied to networkservices.HttpFilter resources enabled by Traffic Director.\nhttpFilterMetadata only applies for load balancers with loadBalancingScheme set to INTERNAL_SELF_MANAGED.\nSee ForwardingRule for more details.\nNot supported when the URL map is bound to a target gRPC proxy that has validateForProxyless field set to true.\nStructure is documented below.\n"
                },
                "matchRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleMatchRule:URLMapPathMatcherRouteRuleMatchRule"
                    },
                    "description": "The rules for determining a match.\nStructure is documented below.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "For routeRules within a given pathMatcher, priority determines the order\nin which load balancer will interpret routeRules. RouteRules are evaluated\nin order of priority, from the lowest to highest number. The priority of\na rule decreases as its number increases (1, 2, 3, N+1). The first rule\nthat matches the request is applied.\nYou cannot configure two or more routeRules with the same priority.\nPriority for each rule must be set to a number between 0 and\n2147483647 inclusive.\nPriority numbers can have gaps, which enable you to add or remove rules\nin the future without affecting the rest of the rules. For example,\n1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which\nyou could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the\nfuture without any impact on existing rules.\n"
                },
                "routeAction": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteAction:URLMapPathMatcherRouteRuleRouteAction",
                    "description": "In response to a matching matchRule, the load balancer performs advanced routing\nactions like URL rewrites, header transformations, etc. prior to forwarding the\nrequest to the selected backend. If  routeAction specifies any\nweightedBackendServices, service must not be set. Conversely if service is set,\nrouteAction cannot contain any  weightedBackendServices. Only one of routeAction\nor urlRedirect must be set.\nStructure is documented below.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The backend service resource to which traffic is\ndirected if this rule is matched. If routeAction is additionally specified,\nadvanced routing actions like URL Rewrites, etc. take effect prior to sending\nthe request to the backend. However, if service is specified, routeAction cannot\ncontain any weightedBackendService s. Conversely, if routeAction specifies any\nweightedBackendServices, service must not be specified. Only one of urlRedirect,\nservice or routeAction.weightedBackendService must be set.\n"
                },
                "urlRedirect": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleUrlRedirect:URLMapPathMatcherRouteRuleUrlRedirect",
                    "description": "When this rule is matched, the request is redirected to a URL specified by\nurlRedirect. If urlRedirect is specified, service or routeAction must not be\nset.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "priority"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleCustomErrorResponsePolicy:URLMapPathMatcherRouteRuleCustomErrorResponsePolicy": {
            "properties": {
                "errorResponseRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleCustomErrorResponsePolicyErrorResponseRule:URLMapPathMatcherRouteRuleCustomErrorResponsePolicyErrorResponseRule"
                    },
                    "description": "Specifies rules for returning error responses.\nIn a given policy, if you specify rules for both a range of error codes as well as rules for specific error codes then rules with specific error codes have a higher priority.\nFor example, assume that you configure a rule for 401 (Un-authorized) code, and another for all 4 series error codes (4XX).\nIf the backend service returns a 401, then the rule for 401 will be applied. However if the backend service returns a 403, the rule for 4xx takes effect.\nStructure is documented below.\n"
                },
                "errorService": {
                    "type": "string",
                    "description": "The full or partial URL to the BackendBucket resource that contains the custom error content. Examples are:\nhttps://www.googleapis.com/compute/v1/projects/project/global/backendBuckets/myBackendBucket\ncompute/v1/projects/project/global/backendBuckets/myBackendBucket\nglobal/backendBuckets/myBackendBucket\nIf errorService is not specified at lower levels like pathMatcher, pathRule and routeRule, an errorService specified at a higher level in the UrlMap will be used. If UrlMap.defaultCustomErrorResponsePolicy contains one or more errorResponseRules[], it must specify errorService.\nIf load balancer cannot reach the backendBucket, a simple Not Found Error will be returned, with the original response code (or overrideResponseCode if configured).\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleCustomErrorResponsePolicyErrorResponseRule:URLMapPathMatcherRouteRuleCustomErrorResponsePolicyErrorResponseRule": {
            "properties": {
                "matchResponseCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Valid values include:\n- A number between 400 and 599: For example 401 or 503, in which case the load balancer applies the policy if the error code exactly matches this value.\n- 5xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 500 to 599.\n- 4xx: Load Balancer will apply the policy if the backend service responds with any response code in the range of 400 to 499.\nValues must be unique within matchResponseCodes and across all errorResponseRules of CustomErrorResponsePolicy.\n"
                },
                "overrideResponseCode": {
                    "type": "integer",
                    "description": "The HTTP status code returned with the response containing the custom error content.\nIf overrideResponseCode is not supplied, the same response code returned by the original backend bucket or backend service is returned to the client.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The full path to a file within backendBucket. For example: /errors/defaultError.html\npath must start with a leading slash. path cannot have trailing slashes.\nIf the file is not available in backendBucket or the load balancer cannot reach the BackendBucket, a simple Not Found Error is returned to the client.\nThe value must be from 1 to 1024 characters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleHeaderAction:URLMapPathMatcherRouteRuleHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAdd:URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request prior to forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAdd:URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response prior to sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAdd:URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAdd:URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleHttpFilterConfig:URLMapPathMatcherRouteRuleHttpFilterConfig": {
            "properties": {
                "config": {
                    "type": "string",
                    "description": "The configuration needed to enable the networkservices.HttpFilter resource.\nThe configuration must be YAML formatted and only contain fields defined in the protobuf identified in configTypeUrl\n"
                },
                "configTypeUrl": {
                    "type": "string",
                    "description": "The fully qualified versioned proto3 type url of the protobuf that the filter expects for its contextual settings,\nfor example: type.googleapis.com/google.protobuf.Struct\n"
                },
                "filterName": {
                    "type": "string",
                    "description": "Name of the networkservices.HttpFilter resource this configuration belongs to.\nThis name must be known to the xDS client. Example: envoy.wasm\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleHttpFilterMetadata:URLMapPathMatcherRouteRuleHttpFilterMetadata": {
            "properties": {
                "config": {
                    "type": "string",
                    "description": "The configuration needed to enable the networkservices.HttpFilter resource.\nThe configuration must be YAML formatted and only contain fields defined in the protobuf identified in configTypeUrl\n"
                },
                "configTypeUrl": {
                    "type": "string",
                    "description": "The fully qualified versioned proto3 type url of the protobuf that the filter expects for its contextual settings,\nfor example: type.googleapis.com/google.protobuf.Struct\n"
                },
                "filterName": {
                    "type": "string",
                    "description": "Name of the networkservices.HttpFilter resource this configuration belongs to.\nThis name must be known to the xDS client. Example: envoy.wasm\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleMatchRule:URLMapPathMatcherRouteRuleMatchRule": {
            "properties": {
                "fullPathMatch": {
                    "type": "string",
                    "description": "For satisfying the matchRule condition, the path of the request must exactly\nmatch the value specified in fullPathMatch after removing any query parameters\nand anchor that may be part of the original URL. FullPathMatch must be between 1\nand 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must\nbe specified.\n"
                },
                "headerMatches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleMatchRuleHeaderMatch:URLMapPathMatcherRouteRuleMatchRuleHeaderMatch"
                    },
                    "description": "Specifies a list of header match criteria, all of which must match corresponding\nheaders in the request.\nStructure is documented below.\n"
                },
                "ignoreCase": {
                    "type": "boolean",
                    "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive.\nDefaults to false.\n"
                },
                "metadataFilters": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleMatchRuleMetadataFilter:URLMapPathMatcherRouteRuleMatchRuleMetadataFilter"
                    },
                    "description": "Opaque filter criteria used by Loadbalancer to restrict routing configuration to\na limited set xDS compliant clients. In their xDS requests to Loadbalancer, xDS\nclients present node metadata. If a match takes place, the relevant routing\nconfiguration is made available to those proxies. For each metadataFilter in\nthis list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the\nfilterLabels must match the corresponding label provided in the metadata. If its\nfilterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match\nwith corresponding labels in the provided metadata. metadataFilters specified\nhere can be overrides those specified in ForwardingRule that refers to this\nUrlMap. metadataFilters only applies to Loadbalancers that have their\nloadBalancingScheme set to INTERNAL_SELF_MANAGED.\nStructure is documented below.\n"
                },
                "pathTemplateMatch": {
                    "type": "string",
                    "description": "For satisfying the matchRule condition, the path of the request\nmust match the wildcard pattern specified in pathTemplateMatch\nafter removing any query parameters and anchor that may be part\nof the original URL.\npathTemplateMatch must be between 1 and 255 characters\n(inclusive).  The pattern specified by pathTemplateMatch may\nhave at most 5 wildcard operators and at most 5 variable\ncaptures in total.\n"
                },
                "prefixMatch": {
                    "type": "string",
                    "description": "For satisfying the matchRule condition, the request's path must begin with the\nspecified prefixMatch. prefixMatch must begin with a /. The value must be\nbetween 1 and 1024 characters. Only one of prefixMatch, fullPathMatch or\nregexMatch must be specified.\n"
                },
                "queryParameterMatches": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch:URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch"
                    },
                    "description": "Specifies a list of query parameter match criteria, all of which must match\ncorresponding query parameters in the request.\nStructure is documented below.\n"
                },
                "regexMatch": {
                    "type": "string",
                    "description": "For satisfying the matchRule condition, the path of the request must satisfy the\nregular expression specified in regexMatch after removing any query parameters\nand anchor supplied with the original URL. For regular expression grammar please\nsee en.cppreference.com/w/cpp/regex/ecmascript  Only one of prefixMatch,\nfullPathMatch or regexMatch must be specified.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleMatchRuleHeaderMatch:URLMapPathMatcherRouteRuleMatchRuleHeaderMatch": {
            "properties": {
                "exactMatch": {
                    "type": "string",
                    "description": "The value should exactly match contents of exactMatch. Only one of exactMatch,\nprefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.\n"
                },
                "headerName": {
                    "type": "string",
                    "description": "The name of the HTTP header to match. For matching against the HTTP request's\nauthority, use a headerMatch with the header name \":authority\". For matching a\nrequest's method, use the headerName \":method\".\n"
                },
                "invertMatch": {
                    "type": "boolean",
                    "description": "If set to false, the headerMatch is considered a match if the match criteria\nabove are met. If set to true, the headerMatch is considered a match if the\nmatch criteria above are NOT met. Defaults to false.\n"
                },
                "prefixMatch": {
                    "type": "string",
                    "description": "The value of the header must start with the contents of prefixMatch. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.\n"
                },
                "presentMatch": {
                    "type": "boolean",
                    "description": "A header with the contents of headerName must exist. The match takes place\nwhether or not the request's header has a value or not. Only one of exactMatch,\nprefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.\n"
                },
                "rangeMatch": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatch:URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatch",
                    "description": "The header value must be an integer and its value must be in the range specified\nin rangeMatch. If the header does not contain an integer, number or is empty,\nthe match fails. For example for a range [-5, 0]   - -3 will match.  - 0 will\nnot match.  - 0.25 will not match.  - -3someString will not match.   Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.\nStructure is documented below.\n"
                },
                "regexMatch": {
                    "type": "string",
                    "description": "The value of the header must match the regular expression specified in\nregexMatch. For regular expression grammar, please see:\nen.cppreference.com/w/cpp/regex/ecmascript  For matching against a port\nspecified in the HTTP request, use a headerMatch with headerName set to PORT and\na regular expression that satisfies the RFC2616 Host header's port specifier.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or\nrangeMatch must be set.\n"
                },
                "suffixMatch": {
                    "type": "string",
                    "description": "The value of the header must end with the contents of suffixMatch. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatch:URLMapPathMatcherRouteRuleMatchRuleHeaderMatchRangeMatch": {
            "properties": {
                "rangeEnd": {
                    "type": "integer",
                    "description": "The end of the range (exclusive).\n"
                },
                "rangeStart": {
                    "type": "integer",
                    "description": "The start of the range (inclusive).\n"
                }
            },
            "type": "object",
            "required": [
                "rangeEnd",
                "rangeStart"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleMatchRuleMetadataFilter:URLMapPathMatcherRouteRuleMatchRuleMetadataFilter": {
            "properties": {
                "filterLabels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel:URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel"
                    },
                    "description": "The list of label value pairs that must match labels in the provided metadata\nbased on filterMatchCriteria  This list must not be empty and can have at the\nmost 64 entries.\nStructure is documented below.\n"
                },
                "filterMatchCriteria": {
                    "type": "string",
                    "description": "Specifies how individual filterLabel matches within the list of filterLabels\ncontribute towards the overall metadataFilter match. Supported values are:\n- MATCH_ANY: At least one of the filterLabels must have a matching label in the\nprovided metadata.\n- MATCH_ALL: All filterLabels must have matching labels in\nthe provided metadata.\nPossible values are: `MATCH_ALL`, `MATCH_ANY`.\n"
                }
            },
            "type": "object",
            "required": [
                "filterLabels",
                "filterMatchCriteria"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel:URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabel": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Name of metadata label. The name can have a maximum length of 1024 characters\nand must be at least 1 character long.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the label must match the specified value. value can have a maximum\nlength of 1024 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch:URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatch": {
            "properties": {
                "exactMatch": {
                    "type": "string",
                    "description": "The queryParameterMatch matches if the value of the parameter exactly matches\nthe contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch\nmust be set.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the query parameter to match. The query parameter must exist in the\nrequest, in the absence of which the request match fails.\n"
                },
                "presentMatch": {
                    "type": "boolean",
                    "description": "Specifies that the queryParameterMatch matches if the request contains the query\nparameter, irrespective of whether the parameter has a value or not. Only one of\npresentMatch, exactMatch and regexMatch must be set.\n"
                },
                "regexMatch": {
                    "type": "string",
                    "description": "The queryParameterMatch matches if the value of the parameter matches the\nregular expression specified by regexMatch. For the regular expression grammar,\nplease see en.cppreference.com/w/cpp/regex/ecmascript  Only one of presentMatch,\nexactMatch and regexMatch must be set.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteAction:URLMapPathMatcherRouteRuleRouteAction": {
            "properties": {
                "cachePolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicy:URLMapPathMatcherRouteRuleRouteActionCachePolicy",
                    "description": "Specifies the cache policy configuration for matched traffic. Available\nonly for Global EXTERNAL_MANAGED load balancer schemes. At least one\nproperty must be specified. This policy cannot be specified if any target\nbackend has Identity-Aware Proxy enabled.\nStructure is documented below.\n"
                },
                "corsPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCorsPolicy:URLMapPathMatcherRouteRuleRouteActionCorsPolicy",
                    "description": "The specification for allowing client side cross-origin requests. Please see W3C\nRecommendation for Cross Origin Resource Sharing\nStructure is documented below.\n"
                },
                "faultInjectionPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy:URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy",
                    "description": "The specification for fault injection introduced into traffic to test the\nresiliency of clients to backend service failure. As part of fault injection,\nwhen clients send requests to a backend service, delays can be introduced by\nLoadbalancer on a percentage of requests before sending those request to the\nbackend service. Similarly requests from clients can be aborted by the\nLoadbalancer for a percentage of requests. timeout and\u003cspan pulumi-lang-nodejs=\" retryPolicy \" pulumi-lang-dotnet=\" RetryPolicy \" pulumi-lang-go=\" retryPolicy \" pulumi-lang-python=\" retry_policy \" pulumi-lang-yaml=\" retryPolicy \" pulumi-lang-java=\" retryPolicy \" pulumi-lang-hcl=\" retry_policy \"\u003e retryPolicy \u003c/span\u003ewill be\nignored by clients that are configured with a fault_injection_policy.\nStructure is documented below.\n"
                },
                "maxStreamDuration": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionMaxStreamDuration:URLMapPathMatcherRouteRuleRouteActionMaxStreamDuration",
                    "description": "Specifies the maximum duration (timeout) for streams on the selected route.\nUnlike the `Timeout` field where the timeout duration starts from the time the request\nhas been fully processed (known as end-of-stream), the duration in this field\nis computed from the beginning of the stream until the response has been processed,\nincluding all retries. A stream that does not complete in this duration is closed.\nStructure is documented below.\n"
                },
                "requestMirrorPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy:URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy",
                    "description": "Specifies the policy on how requests intended for the route's backends are\nshadowed to a separate mirrored backend service. Loadbalancer does not wait for\nresponses from the shadow service. Prior to sending traffic to the shadow\nservice, the host / authority header is suffixed with -shadow.\nStructure is documented below.\n"
                },
                "retryPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionRetryPolicy:URLMapPathMatcherRouteRuleRouteActionRetryPolicy",
                    "description": "Specifies the retry policy associated with this route.\nStructure is documented below.\n"
                },
                "timeout": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionTimeout:URLMapPathMatcherRouteRuleRouteActionTimeout",
                    "description": "Specifies the timeout for the selected route. Timeout is computed from the time\nthe request is has been fully processed (i.e. end-of-stream) up until the\nresponse has been completely processed. Timeout includes all retries. If not\nspecified, the default value is 15 seconds.\nStructure is documented below.\n"
                },
                "urlRewrite": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionUrlRewrite:URLMapPathMatcherRouteRuleRouteActionUrlRewrite",
                    "description": "The spec to modify the URL of the request, prior to forwarding the request to\nthe matched service\nStructure is documented below.\n"
                },
                "weightedBackendServices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionWeightedBackendService:URLMapPathMatcherRouteRuleRouteActionWeightedBackendService"
                    },
                    "description": "A list of weighted backend services to send traffic to when a route match\noccurs. The weights determine the fraction of traffic that flows to their\ncorresponding backend service. If all traffic needs to go to a single backend\nservice, there must be one  weightedBackendService with weight set to a non 0\nnumber. Once a backendService is identified and before forwarding the request to\nthe backend service, advanced routing actions like Url rewrites and header\ntransformations are applied depending on additional settings specified in this\nHttpRouteAction.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "maxStreamDuration"
                    ]
                }
            }
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicy:URLMapPathMatcherRouteRuleRouteActionCachePolicy": {
            "properties": {
                "cacheBypassRequestHeaderNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Bypass the cache when the specified request headers are matched by name,\ne.g. Pragma or Authorization headers. Values are case-insensitive. Up to 5\nheader names can be specified. The cache is bypassed for all cacheMode\nvalues.\n"
                },
                "cacheKeyPolicy": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyCacheKeyPolicy:URLMapPathMatcherRouteRuleRouteActionCachePolicyCacheKeyPolicy",
                    "description": "The cache key configuration. If not specified, the default behavior depends\non the backend type: for Backend Services, the complete request URI is\nused; for Backend Buckets, the request URI is used without the protocol or\nhost, and only query parameters known to Cloud Storage are included.\nStructure is documented below.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this route. If not\nspecified, Cloud CDN uses CACHE_ALL_STATIC mode.\nPossible values are: `USE_ORIGIN_HEADERS`, `FORCE_CACHE_ALL`, `CACHE_ALL_STATIC`.\n"
                },
                "clientTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyClientTtl:URLMapPathMatcherRouteRuleRouteActionCachePolicyClientTtl",
                    "description": "Specifies a separate client (e.g. browser client) maximum TTL for cached\ncontent. This is used to clamp the max-age (or Expires) value sent to the\nclient. With FORCE_CACHE_ALL, the lesser of clientTtl and defaultTtl\nis used for the response max-age directive, along with a \"public\"\ndirective. For cacheable content in CACHE_ALL_STATIC mode, clientTtl\nclamps the max-age from the origin (if specified), or else sets the\nresponse max-age directive to the lesser of the clientTtl and defaultTtl,\nand also ensures a \"public\" cache-control directive is present. The maximum\nallowed value is 31,622,400s (1 year). If not specified, Cloud CDN uses\n3600s (1 hour) for CACHE_ALL_STATIC mode. Cannot exceed maxTtl.\nCannot be specified when cacheMode is USE_ORIGIN_HEADERS.\nStructure is documented below.\n"
                },
                "defaultTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyDefaultTtl:URLMapPathMatcherRouteRuleRouteActionCachePolicyDefaultTtl",
                    "description": "Specifies the default TTL for cached content for responses that do not have\nan existing valid TTL (max-age or s-maxage). Setting a TTL of \"0\" means\n\"always revalidate\". The value of defaultTtl cannot be set to a value\ngreater than that of maxTtl. When the cacheMode is set to\nFORCE_CACHE_ALL, the defaultTtl will overwrite the TTL set in all\nresponses. The maximum allowed value is 31,622,400s (1 year). Infrequently\naccessed objects may be evicted from the cache before the defined TTL. If\nnot specified, Cloud CDN uses 3600s (1 hour) for CACHE_ALL_STATIC and\nFORCE_CACHE_ALL modes. Cannot be specified when cacheMode is\nUSE_ORIGIN_HEADERS.\nStructure is documented below.\n"
                },
                "maxTtl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyMaxTtl:URLMapPathMatcherRouteRuleRouteActionCachePolicyMaxTtl",
                    "description": "Specifies the maximum allowed TTL for cached content. Cache directives that\nattempt to set a max-age or s-maxage higher than this, or an Expires header\nmore than maxTtl seconds in the future will be capped at the value of\nmaxTtl, as if it were the value of an s-maxage Cache-Control directive.\nHeaders sent to the client will not be modified. Setting a TTL of \"0\" means\n\"always revalidate\". The maximum allowed value is 31,622,400s (1 year).\nInfrequently accessed objects may be evicted from the cache before the\ndefined TTL. If not specified, Cloud CDN uses 86400s (1 day) for\nCACHE_ALL_STATIC mode. Can be specified only for CACHE_ALL_STATIC cache\nmode.\nStructure is documented below.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply\nfine-grained caching for common errors or redirects. This can reduce the\nload on your origin and improve end-user experience by reducing response\nlatency. When the cacheMode is set to CACHE_ALL_STATIC or\nUSE_ORIGIN_HEADERS, negative caching applies to responses with the\nspecified response code that lack any Cache-Control, Expires, or\nPragma: no-cache directives. When the cacheMode is set to\nFORCE_CACHE_ALL, negative caching applies to all responses with the\nspecified response code, and overrides any caching headers. By default,\nCloud CDN applies the following TTLs to these HTTP status codes:\n* 300 (Multiple Choice), 301, 308 (Permanent Redirects): 10m\n* 404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons): 120s\n* 405 (Method Not Found), 501 (Not Implemented): 60s\nThese defaults can be overridden in negativeCachingPolicy. If not\nspecified, Cloud CDN applies negative caching by default.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyNegativeCachingPolicy:URLMapPathMatcherRouteRuleRouteActionCachePolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching\nmust be enabled to configure negativeCachingPolicy. Omitting the policy\nand leaving negativeCaching enabled will use Cloud CDN's default cache\nTTLs. Note that when specifying an explicit negativeCachingPolicy, you\nshould take care to specify a cache TTL for all response codes that you\nwish to cache. Cloud CDN will not apply any default negative caching when\na policy exists.\nStructure is documented below.\n"
                },
                "requestCoalescing": {
                    "type": "boolean",
                    "description": "If true then Cloud CDN will combine multiple concurrent cache fill\nrequests into a small number of requests to the origin. If not specified,\nCloud CDN applies request coalescing by default.\n"
                },
                "serveWhileStale": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyServeWhileStale:URLMapPathMatcherRouteRuleRouteActionCachePolicyServeWhileStale",
                    "description": "Serve existing content from the cache (if available) when revalidating\ncontent with the origin, or when an error is encountered when refreshing\nthe cache. This setting defines the default \"max-stale\" duration for any\ncached responses that do not specify a max-stale directive. Stale\nresponses that exceed the TTL configured here will not be served. The\ndefault limit (max-stale) is 86400s (1 day), which will allow stale\ncontent to be served up to this limit beyond the max-age (or s-maxage) of\na cached response. The maximum allowed value is 604800 (1 week). Set this\nto zero (0) to disable serve-while-stale.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyCacheKeyPolicy:URLMapPathMatcherRouteRuleRouteActionCachePolicyCacheKeyPolicy": {
            "properties": {
                "excludedQueryParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to exclude in cache keys. All other\nparameters will be included. Either specify excludedQueryParameters\nor includedQueryParameters, not both. '\u0026' and '=' will be percent\nencoded and not treated as delimiters. Note: This field applies to\nroutes that use backend services. Attempting to set it on a route that\npoints exclusively to Backend Buckets will result in a configuration\nerror. For routes that point to a Backend Bucket, use\nincludedQueryParameters to define which parameters should be part of\nthe cache key.\n"
                },
                "includeHost": {
                    "type": "boolean",
                    "description": "If true, requests to different hosts will be cached separately. Note:\nThis setting is only applicable to routes that use a Backend Service.\nIt does not affect requests served by a Backend Bucket, as the host is\nnever included in a Backend Bucket's cache key. Attempting to set it on\na route that points exclusively to Backend Buckets will result in a\nconfiguration error.\n"
                },
                "includeProtocol": {
                    "type": "boolean",
                    "description": "If true, http and https requests will be cached separately. Note: This\nsetting is only applicable to routes that use a Backend Service. It\ndoes not affect requests served by a Backend Bucket, as the protocol is\nnever included in a Backend Bucket's cache key. Attempting to set on a\nroute that points exclusively to Backend Buckets will result in a\nconfiguration error.\n"
                },
                "includeQueryString": {
                    "type": "boolean",
                    "description": "If true, include query string parameters in the cache key according to\nincludedQueryParameters and excludedQueryParameters. If neither is\nset, the entire query string will be included. If false, the query\nstring will be excluded from the cache key entirely. Note: This field\napplies to routes that use backend services. Attempting to set it on a\nroute that points exclusively to Backend Buckets will result in a\nconfiguration error. For routes that point to a Backend Bucket, use\nincludedQueryParameters to define which parameters should be part of\nthe cache key.\n"
                },
                "includedCookieNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP cookies (by name) to be used in the cache key. The\nname=value pair will be used in the cache key Cloud CDN generates.\nNote: This setting is only applicable to routes that use a Backend\nService. It does not affect requests served by a Backend Bucket.\nAttempting to set it on a route that points exclusively to Backend\nBuckets will result in a configuration error. Up to 5 cookie names can\nbe specified.\n"
                },
                "includedHeaderNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP request headers (by name) to be used in the cache key.\n"
                },
                "includedQueryParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys. All other\nparameters will be excluded. Either specify includedQueryParameters\nor excludedQueryParameters, not both. '\u0026' and '=' will be percent\nencoded and not treated as delimiters.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyClientTtl:URLMapPathMatcherRouteRuleRouteActionCachePolicyClientTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyDefaultTtl:URLMapPathMatcherRouteRuleRouteActionCachePolicyDefaultTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyMaxTtl:URLMapPathMatcherRouteRuleRouteActionCachePolicyMaxTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyNegativeCachingPolicy:URLMapPathMatcherRouteRuleRouteActionCachePolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes\n300, 301, 302, 307, 308, 404, 405, 410, 421, 451 and 501 can be\nspecified as values, and you cannot specify a status code more than\nonce.\n"
                },
                "ttl": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyNegativeCachingPolicyTtl:URLMapPathMatcherRouteRuleRouteActionCachePolicyNegativeCachingPolicyTtl",
                    "description": "The TTL (in seconds) for which to cache responses with the\ncorresponding status code. The maximum allowed value is 1800s (30\nminutes). Infrequently accessed objects may be evicted from the cache\nbefore the defined TTL.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyNegativeCachingPolicyTtl:URLMapPathMatcherRouteRuleRouteActionCachePolicyNegativeCachingPolicyTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCachePolicyServeWhileStale:URLMapPathMatcherRouteRuleRouteActionCachePolicyServeWhileStale": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionCorsPolicy:URLMapPathMatcherRouteRuleRouteActionCorsPolicy": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials.\nThis translates to the Access-Control-Allow-Credentials header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Allow-Methods header.\n"
                },
                "allowOriginRegexes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "allowOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the content for the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "integer",
                    "description": "Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy:URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicy": {
            "properties": {
                "abort": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbort:URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbort",
                    "description": "The specification for how client requests are aborted as part of fault injection.\nStructure is documented below.\n"
                },
                "delay": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelay:URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelay",
                    "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.\nStructure is documented below.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbort:URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyAbort": {
            "properties": {
                "httpStatus": {
                    "type": "integer",
                    "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelay:URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelay": {
            "properties": {
                "fixedDelay": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelayFixedDelay:URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelayFixedDelay",
                    "description": "Specifies the value of the fixed delay interval.\nStructure is documented below.\n"
                },
                "percentage": {
                    "type": "number",
                    "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelayFixedDelay:URLMapPathMatcherRouteRuleRouteActionFaultInjectionPolicyDelayFixedDelay": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionMaxStreamDuration:URLMapPathMatcherRouteRuleRouteActionMaxStreamDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy:URLMapPathMatcherRouteRuleRouteActionRequestMirrorPolicy": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the BackendService resource being mirrored to.\n"
                },
                "mirrorPercent": {
                    "type": "number",
                    "description": "(Optional, Beta)\nThe percentage of requests to be mirrored to backendService.\nThe value must be between 0.0 and 100.0 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "backendService"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionRetryPolicy:URLMapPathMatcherRouteRuleRouteActionRetryPolicy": {
            "properties": {
                "numRetries": {
                    "type": "integer",
                    "description": "Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.\n"
                },
                "perTryTimeout": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionRetryPolicyPerTryTimeout:URLMapPathMatcherRouteRuleRouteActionRetryPolicyPerTryTimeout",
                    "description": "Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.\nStructure is documented below.\n"
                },
                "retryConditions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specfies one or more conditions when this retry rule applies. Valid values are:\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with any 5xx response code,\nor if the backend service does not respond at all, example: disconnects, reset, read timeout,\n* connection failure, and refused streams.\n* gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures connecting to backend services,\nfor example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\nCurrently the only retriable error supported is 409.\n* refused-stream:Loadbalancer will retry if the backend service resets the stream with a REFUSED_STREAM error code.\nThis reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response header is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the gRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response header is set to resource-exhausted\n* unavailable: Loadbalancer will retry if the gRPC status code in the response header is set to unavailable\n"
                }
            },
            "type": "object",
            "required": [
                "numRetries"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionRetryPolicyPerTryTimeout:URLMapPathMatcherRouteRuleRouteActionRetryPolicyPerTryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionTimeout:URLMapPathMatcherRouteRuleRouteActionTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n"
                }
            },
            "type": "object",
            "required": [
                "seconds"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionUrlRewrite:URLMapPathMatcherRouteRuleRouteActionUrlRewrite": {
            "properties": {
                "hostRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected service, the request's host header is replaced\nwith contents of hostRewrite.\nThe value must be between 1 and 255 characters.\n"
                },
                "pathPrefixRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected backend service, the matching portion of the\nrequest's path is replaced by pathPrefixRewrite.\nThe value must be between 1 and 1024 characters.\n"
                },
                "pathTemplateRewrite": {
                    "type": "string",
                    "description": "Prior to forwarding the request to the selected origin, if the\nrequest matched a pathTemplateMatch, the matching portion of the\nrequest's path is replaced re-written using the pattern specified\nby pathTemplateRewrite.\npathTemplateRewrite must be between 1 and 255 characters\n(inclusive), must start with a '/', and must only use variables\ncaptured by the route's pathTemplate matchers.\npathTemplateRewrite may only be used when all of a route's\nMatchRules specify pathTemplate.\nOnly one of pathPrefixRewrite and pathTemplateRewrite may be\nspecified.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionWeightedBackendService:URLMapPathMatcherRouteRuleRouteActionWeightedBackendService": {
            "properties": {
                "backendService": {
                    "type": "string",
                    "description": "The full or partial URL to the default BackendService resource. Before forwarding the\nrequest to backendService, the loadbalancer applies any relevant headerActions\nspecified as part of this backendServiceWeight.\n"
                },
                "headerAction": {
                    "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderAction:URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderAction",
                    "description": "Specifies changes to request and response headers that need to take effect for\nthe selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing\nHttpRouteRule, PathMatcher and UrlMap.\nStructure is documented below.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "Specifies the fraction of traffic sent to backendService, computed as\nweight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request\nhas been directed to a backendService, subsequent requests will be sent to the same backendService\nas determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000\n"
                }
            },
            "type": "object",
            "required": [
                "backendService",
                "weight"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderAction:URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderAction": {
            "properties": {
                "requestHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd"
                    },
                    "description": "Headers to add to a matching request prior to forwarding the request to the backendService.\nStructure is documented below.\n"
                },
                "requestHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.\n"
                },
                "responseHeadersToAdds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd"
                    },
                    "description": "Headers to add the response prior to sending the response back to the client.\nStructure is documented below.\n"
                },
                "responseHeadersToRemoves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd:URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd:URLMapPathMatcherRouteRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAdd": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The name of the header to add.\n"
                },
                "headerValue": {
                    "type": "string",
                    "description": "The value of the header to add.\n"
                },
                "replace": {
                    "type": "boolean",
                    "description": "If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName",
                "headerValue",
                "replace"
            ]
        },
        "gcp:compute/URLMapPathMatcherRouteRuleUrlRedirect:URLMapPathMatcherRouteRuleUrlRedirect": {
            "properties": {
                "hostRedirect": {
                    "type": "string",
                    "description": "The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.\n"
                },
                "httpsRedirect": {
                    "type": "boolean",
                    "description": "If set to true, the URL scheme in the redirected request is set to https. If set\nto false, the URL scheme of the redirected request will remain the same as that\nof the request. This must only be set for UrlMaps used in TargetHttpProxys.\nSetting this true for TargetHttpsProxy is not permitted. Defaults to false.\n"
                },
                "pathRedirect": {
                    "type": "string",
                    "description": "The path that will be used in the redirect response instead of the one that was\nsupplied in the request. Only one of pathRedirect or prefixRedirect must be\nspecified. The value must be between 1 and 1024 characters.\n"
                },
                "prefixRedirect": {
                    "type": "string",
                    "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\n"
                },
                "redirectResponseCode": {
                    "type": "string",
                    "description": "The HTTP Status code to use for this RedirectAction. Supported values are:\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n* FOUND, which corresponds to 302.\n* SEE_OTHER which corresponds to 303.\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method will be retained.\n* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method will be retained.\n"
                },
                "stripQuery": {
                    "type": "boolean",
                    "description": "If set to true, any accompanying query portion of the original URL is removed\nprior to redirecting the request. If set to false, the query portion of the\noriginal URL is retained. Defaults to false.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/URLMapTest:URLMapTest": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of this test case.\n"
                },
                "expectedOutputUrl": {
                    "type": "string",
                    "description": "The expected output URL evaluated by the load balancer containing the scheme, host, path and query parameters.\nFor rules that forward requests to backends, the test passes only when expectedOutputUrl matches the request forwarded by the load balancer to backends. For rules with urlRewrite, the test verifies that the forwarded request matches hostRewrite and pathPrefixRewrite in the urlRewrite action. When service is specified, expectedOutputUrl`s scheme is ignored.\nFor rules with urlRedirect, the test passes only if expectedOutputUrl matches the URL in the load balancer's redirect response. If urlRedirect specifies httpsRedirect, the test passes only if the scheme in expectedOutputUrl is also set to HTTPS. If urlRedirect specifies stripQuery, the test passes only if expectedOutputUrl does not contain any query parameters.\nexpectedOutputUrl is optional when service is specified.\n"
                },
                "expectedRedirectResponseCode": {
                    "type": "integer",
                    "description": "For rules with urlRedirect, the test passes only if expectedRedirectResponseCode matches the HTTP status code in load balancer's redirect response.\nexpectedRedirectResponseCode cannot be set when service is set.\n"
                },
                "headers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/URLMapTestHeader:URLMapTestHeader"
                    },
                    "description": "HTTP headers for this request.\nStructure is documented below.\n"
                },
                "host": {
                    "type": "string",
                    "description": "Host portion of the URL.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path portion of the URL.\n"
                },
                "service": {
                    "type": "string",
                    "description": "The backend service or backend bucket link that should be matched by this test.\n"
                }
            },
            "type": "object",
            "required": [
                "host",
                "path"
            ]
        },
        "gcp:compute/URLMapTestHeader:URLMapTestHeader": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "Header name.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Header value.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ]
        },
        "gcp:compute/VPNGatewayParams:VPNGatewayParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the Vpn Gateway. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/VPNTunnelCipherSuite:VPNTunnelCipherSuite": {
            "properties": {
                "phase1": {
                    "$ref": "#/types/gcp:compute/VPNTunnelCipherSuitePhase1:VPNTunnelCipherSuitePhase1",
                    "description": "Cipher configuration for phase 1 of the IKE protocol.\nStructure is documented below.\n",
                    "willReplaceOnChanges": true
                },
                "phase2": {
                    "$ref": "#/types/gcp:compute/VPNTunnelCipherSuitePhase2:VPNTunnelCipherSuitePhase2",
                    "description": "Cipher configuration for phase 2 of the IKE protocol.\nStructure is documented below.\n\n\n\u003ca name=\u003cspan pulumi-lang-nodejs=\"\"nestedCipherSuitePhase1\"\" pulumi-lang-dotnet=\"\"NestedCipherSuitePhase1\"\" pulumi-lang-go=\"\"nestedCipherSuitePhase1\"\" pulumi-lang-python=\"\"nested_cipher_suite_phase1\"\" pulumi-lang-yaml=\"\"nestedCipherSuitePhase1\"\" pulumi-lang-java=\"\"nestedCipherSuitePhase1\"\" pulumi-lang-hcl=\"\"nested_cipher_suite_phase1\"\"\u003e\"nestedCipherSuitePhase1\"\u003c/span\u003e\u003e\u003c/a\u003eThe \u003cspan pulumi-lang-nodejs=\"`phase1`\" pulumi-lang-dotnet=\"`Phase1`\" pulumi-lang-go=\"`phase1`\" pulumi-lang-python=\"`phase1`\" pulumi-lang-yaml=\"`phase1`\" pulumi-lang-java=\"`phase1`\" pulumi-lang-hcl=\"`phase1`\"\u003e`phase1`\u003c/span\u003e block supports:\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/VPNTunnelCipherSuitePhase1:VPNTunnelCipherSuitePhase1": {
            "properties": {
                "dhs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Diffie-Hellman groups.\n",
                    "willReplaceOnChanges": true
                },
                "encryptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Encryption algorithms.\n",
                    "willReplaceOnChanges": true
                },
                "integrities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Integrity algorithms.\n",
                    "willReplaceOnChanges": true
                },
                "prves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Pseudo-random functions.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/VPNTunnelCipherSuitePhase2:VPNTunnelCipherSuitePhase2": {
            "properties": {
                "encryptions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Encryption algorithms.\n",
                    "willReplaceOnChanges": true
                },
                "integrities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Integrity algorithms.\n",
                    "willReplaceOnChanges": true
                },
                "pfs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Perfect forward secrecy groups.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/VPNTunnelParams:VPNTunnelParams": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the Vpn Tunnel. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "gcp:compute/WireGroupEndpoint:WireGroupEndpoint": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "interconnects": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/WireGroupEndpointInterconnect:WireGroupEndpointInterconnect"
                    },
                    "description": "Structure is documented below.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ]
        },
        "gcp:compute/WireGroupEndpointInterconnect:WireGroupEndpointInterconnect": {
            "properties": {
                "interconnect": {
                    "type": "string",
                    "description": "(Optional)\n"
                },
                "interconnectName": {
                    "type": "string",
                    "description": "The identifier for this object. Format specified above.\n"
                },
                "vlanTags": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "VLAN tags for the interconnect.\n"
                }
            },
            "type": "object",
            "required": [
                "interconnectName"
            ]
        },
        "gcp:compute/WireGroupTopology:WireGroupTopology": {
            "properties": {
                "endpoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/WireGroupTopologyEndpoint:WireGroupTopologyEndpoint"
                    },
                    "description": "Endpoints grouped by location, each mapping to interconnect configurations.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "endpoints"
                    ]
                }
            }
        },
        "gcp:compute/WireGroupTopologyEndpoint:WireGroupTopologyEndpoint": {
            "properties": {
                "city": {
                    "type": "string",
                    "description": "(Output)\n"
                },
                "label": {
                    "type": "string",
                    "description": "(Output)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "city",
                        "label"
                    ]
                }
            }
        },
        "gcp:compute/WireGroupWire:WireGroupWire": {
            "properties": {
                "adminEnabled": {
                    "type": "boolean",
                    "description": "Indicates whether the wire group is administratively enabled.\n"
                },
                "endpoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/WireGroupWireEndpoint:WireGroupWireEndpoint"
                    },
                    "description": "Endpoints grouped by location, each mapping to interconnect configurations.\nStructure is documented below.\n"
                },
                "label": {
                    "type": "string",
                    "description": "(Output)\n"
                },
                "wireProperties": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/WireGroupWireWireProperty:WireGroupWireWireProperty"
                    },
                    "description": "Default properties for wires within the group.\nStructure is documented below.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "adminEnabled",
                        "endpoints",
                        "label",
                        "wireProperties"
                    ]
                }
            }
        },
        "gcp:compute/WireGroupWireEndpoint:WireGroupWireEndpoint": {
            "properties": {
                "interconnect": {
                    "type": "string",
                    "description": "(Output)\n"
                },
                "vlanTag": {
                    "type": "integer",
                    "description": "(Output)\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "interconnect",
                        "vlanTag"
                    ]
                }
            }
        },
        "gcp:compute/WireGroupWireGroupProperties:WireGroupWireGroupProperties": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Type of wire group (enum).\nWIRE: a single pseudowire over two Interconnect connections   with no redundancy.\nREDUNDANT: two pseudowires over four Interconnect connections, with two connections in one metro and two connections in another metro.\nBOX_AND_CROSS: four pseudowires over four Interconnect connections, with two connections in one metro and two connections in another metro.\n"
                }
            },
            "type": "object"
        },
        "gcp:compute/WireGroupWireProperties:WireGroupWireProperties": {
            "properties": {
                "bandwidthAllocation": {
                    "type": "string",
                    "description": "The configuration of a wire's bandwidth allocation.\nALLOCATE_PER_WIRE: configures a separate unmetered bandwidth allocation (and associated charges) for each wire in the group.\nSHARED_WITH_WIRE_GROUP: this is the default behavior, which configures one unmetered bandwidth allocation for the wire group. The unmetered bandwidth is divided equally across each wire in the group, but dynamic\nthrottling reallocates unused unmetered bandwidth from unused or underused wires to other wires in the group.\n"
                },
                "bandwidthUnmetered": {
                    "type": "integer",
                    "description": "The unmetered bandwidth setting.\n"
                },
                "faultResponse": {
                    "type": "string",
                    "description": "Response when a fault is detected in a pseudowire:\nNONE: default.\nDISABLE_PORT: set the port line protocol down when inline probes detect a fault. This setting is only permitted on port mode pseudowires.\n"
                }
            },
            "type": "object",
            "required": [
                "bandwidthAllocation"
            ]
        },
        "gcp:compute/WireGroupWireWireProperty:WireGroupWireWireProperty": {
            "properties": {
                "bandwidthUnmetered": {
                    "type": "integer",
                    "description": "The unmetered bandwidth setting.\n"
                },
                "faultResponse": {
                    "type": "string",
                    "description": "Response when a fault is detected in a pseudowire:\nNONE: default.\nDISABLE_PORT: set the port line protocol down when inline probes detect a fault. This setting is only permitted on port mode pseudowires.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "bandwidthUnmetered",
                        "faultResponse"
                    ]
                }
            }
        },
        "gcp:compute/getAddressesAddress:getAddressesAddress": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The IP address (for example `1.2.3.4`).\n"
                },
                "addressType": {
                    "type": "string",
                    "description": "The IP address type, can be `EXTERNAL` or `INTERNAL`.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The IP address description.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map containing IP labels.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The IP address name.\n"
                },
                "prefixLength": {
                    "type": "integer",
                    "description": "The prefix length of the IP range. If not present, it means the address field is a single IP address.\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region that should be considered to search addresses.\nAll regions are considered if missing.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "The URI of the created resource.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Indicates if the address is used. Possible values are: RESERVED or IN_USE.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "addressType",
                "description",
                "labels",
                "name",
                "prefixLength",
                "region",
                "selfLink",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendBucketCdnPolicy:getBackendBucketCdnPolicy": {
            "properties": {
                "bypassCacheOnRequestHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendBucketCdnPolicyBypassCacheOnRequestHeader:getBackendBucketCdnPolicyBypassCacheOnRequestHeader"
                    },
                    "description": "Bypass the cache when the specified request headers are matched - e.g. Pragma or Authorization headers. Up to 5 headers can be specified. The cache is bypassed for all cdnPolicy.cacheMode settings.\n"
                },
                "cacheKeyPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendBucketCdnPolicyCacheKeyPolicy:getBackendBucketCdnPolicyCacheKeyPolicy"
                    },
                    "description": "The CacheKeyPolicy for this CdnPolicy.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this backend.\nThe possible values are: USE_ORIGIN_HEADERS, FORCE_CACHE_ALL and CACHE_ALL_STATIC Possible values: [\"USE_ORIGIN_HEADERS\", \"FORCE_CACHE_ALL\", \"CACHE_ALL_STATIC\"]\n"
                },
                "clientTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin. When the\n'cache_mode' is set to \"USE_ORIGIN_HEADERS\", you must omit this field.\n"
                },
                "defaultTtl": {
                    "type": "integer",
                    "description": "Specifies the default TTL for cached content served by this origin for responses\nthat do not have an existing valid TTL (max-age or s-max-age). When the 'cache_mode'\nis set to \"USE_ORIGIN_HEADERS\", you must omit this field.\n"
                },
                "maxTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin. When the\n'cache_mode' is set to \"USE_ORIGIN_HEADERS\", you must omit this field.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply fine-grained caching for common errors or redirects.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendBucketCdnPolicyNegativeCachingPolicy:getBackendBucketCdnPolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching must be enabled to configure negativeCachingPolicy.\nOmitting the policy and leaving negativeCaching enabled will use Cloud CDN's default cache TTLs.\n"
                },
                "requestCoalescing": {
                    "type": "boolean",
                    "description": "If true then Cloud CDN will combine multiple concurrent cache fill requests into a small number of requests to the origin.\n"
                },
                "serveWhileStale": {
                    "type": "integer",
                    "description": "Serve existing content from the cache (if available) when revalidating content with the origin, or when an error is encountered when refreshing the cache.\n"
                },
                "signedUrlCacheMaxAgeSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the response to a signed URL request will\nbe considered fresh. After this time period,\nthe response will be revalidated before being served.\nWhen serving responses to signed URL requests,\nCloud CDN will internally behave as though\nall responses from this backend had a \"Cache-Control: public,\nmax-age=[TTL]\" header, regardless of any existing Cache-Control\nheader. The actual headers served in responses will not be altered.\n"
                }
            },
            "type": "object",
            "required": [
                "bypassCacheOnRequestHeaders",
                "cacheKeyPolicies",
                "cacheMode",
                "clientTtl",
                "defaultTtl",
                "maxTtl",
                "negativeCaching",
                "negativeCachingPolicies",
                "requestCoalescing",
                "serveWhileStale",
                "signedUrlCacheMaxAgeSec"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendBucketCdnPolicyBypassCacheOnRequestHeader:getBackendBucketCdnPolicyBypassCacheOnRequestHeader": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The header field name to match on when bypassing cache. Values are case-insensitive.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendBucketCdnPolicyCacheKeyPolicy:getBackendBucketCdnPolicyCacheKeyPolicy": {
            "properties": {
                "includeHttpHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP request headers (by name) to be used in the\ncache key.\n"
                },
                "queryStringWhitelists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys.\nDefault parameters are always included. '\u0026' and '=' will\nbe percent encoded and not treated as delimiters.\n"
                }
            },
            "type": "object",
            "required": [
                "includeHttpHeaders",
                "queryStringWhitelists"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendBucketCdnPolicyNegativeCachingPolicy:getBackendBucketCdnPolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 308, 404, 405, 410, 421, 451 and 501\ncan be specified as values, and you cannot specify a status code more than once.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s\n(30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "ttl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendBucketParam:getBackendBucketParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the backend bucket. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceBackend:getBackendServiceBackend": {
            "properties": {
                "balancingMode": {
                    "type": "string",
                    "description": "Specifies the balancing mode for this backend.\n\nFor global HTTP(S) or TCP/SSL load balancing, the default is\nUTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)),\nCUSTOM_METRICS (for HTTP(s)) and CONNECTION (for TCP/SSL).\n\nSee the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode)\nfor an explanation of load balancing modes. Default value: \"UTILIZATION\" Possible values: [\"UTILIZATION\", \"RATE\", \"CONNECTION\", \"CUSTOM_METRICS\", \"IN_FLIGHT\"]\n"
                },
                "capacityScaler": {
                    "type": "number",
                    "description": "A multiplier applied to the group's maximum servicing capacity\n(based on UTILIZATION, RATE or CONNECTION).\n\nDefault value is 1, which means the group will serve up to 100%\nof its configured capacity (depending on balancingMode). A\nsetting of 0 means the group is completely drained, offering\n0% of its available Capacity. Valid range is [0.0,1.0].\n"
                },
                "customMetrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceBackendCustomMetric:getBackendServiceBackendCustomMetric"
                    },
                    "description": "The set of custom metrics that are used for \u003ccode\u003eCUSTOM_METRICS\u003c/code\u003e BalancingMode.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Textual description for the Backend Service.\n"
                },
                "group": {
                    "type": "string",
                    "description": "The fully-qualified URL of an Instance Group or Network Endpoint\nGroup resource. In case of instance group this defines the list\nof instances that serve traffic. Member virtual machine\ninstances from each instance group must live in the same zone as\nthe instance group itself. No two backends in a backend service\nare allowed to use same Instance Group resource.\n\nFor Network Endpoint Groups this defines list of endpoints. All\nendpoints of Network Endpoint Group must be hosted on instances\nlocated in the same zone as the Network Endpoint Group.\n\nBackend services cannot mix Instance Group and\nNetwork Endpoint Group backends.\n\nNote that you must specify an Instance Group or Network Endpoint\nGroup resource using the fully-qualified URL, rather than a\npartial URL.\n"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections for the group. Can\nbe used with either CONNECTION or UTILIZATION balancing modes.\n\nFor CONNECTION mode, either maxConnections or one\nof maxConnectionsPerInstance or maxConnectionsPerEndpoint,\nas appropriate for group type, must be set.\n"
                },
                "maxConnectionsPerEndpoint": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections that a single backend\nnetwork endpoint can handle. This is used to calculate the\ncapacity of the group. Can be used in either CONNECTION or\nUTILIZATION balancing modes.\n\nFor CONNECTION mode, either\nmaxConnections or maxConnectionsPerEndpoint must be set.\n"
                },
                "maxConnectionsPerInstance": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections that a single\nbackend instance can handle. This is used to calculate the\ncapacity of the group. Can be used in either CONNECTION or\nUTILIZATION balancing modes.\n\nFor CONNECTION mode, either maxConnections or\nmaxConnectionsPerInstance must be set.\n"
                },
                "maxInFlightRequests": {
                    "type": "integer",
                    "description": "Defines a maximum number of in-flight requests for the whole NEG\nor instance group. Not available if backend's balancingMode is RATE\nor CONNECTION.\n"
                },
                "maxInFlightRequestsPerEndpoint": {
                    "type": "integer",
                    "description": "Defines a maximum number of in-flight requests for a single endpoint.\nNot available if backend's balancingMode is RATE or CONNECTION.\n"
                },
                "maxInFlightRequestsPerInstance": {
                    "type": "integer",
                    "description": "Defines a maximum number of in-flight requests for a single VM.\nNot available if backend's balancingMode is RATE or CONNECTION.\n"
                },
                "maxRate": {
                    "type": "integer",
                    "description": "The max requests per second (RPS) of the group.\n\nCan be used with either RATE or UTILIZATION balancing modes,\nbut required if RATE mode. For RATE mode, either maxRate or one\nof maxRatePerInstance or maxRatePerEndpoint, as appropriate for\ngroup type, must be set.\n"
                },
                "maxRatePerEndpoint": {
                    "type": "number",
                    "description": "The max requests per second (RPS) that a single backend network\nendpoint can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerEndpoint must be set.\n"
                },
                "maxRatePerInstance": {
                    "type": "number",
                    "description": "The max requests per second (RPS) that a single backend\ninstance can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerInstance must be set.\n"
                },
                "maxUtilization": {
                    "type": "number",
                    "description": "Used when balancingMode is UTILIZATION. This ratio defines the\nCPU utilization target for the group. Valid range is [0.0, 1.0].\n"
                },
                "preference": {
                    "type": "string",
                    "description": "This field indicates whether this backend should be fully utilized before sending traffic to backends\nwith default preference. This field cannot be set when loadBalancingScheme is set to 'EXTERNAL'. The possible values are:\n  - PREFERRED: Backends with this preference level will be filled up to their capacity limits first,\n    based on RTT.\n  - DEFAULT: If preferred backends don't have enough capacity, backends in this layer would be used and\n    traffic would be assigned based on the load balancing algorithm you use. This is the default Possible values: [\"PREFERRED\", \"DEFAULT\"]\n"
                },
                "trafficDuration": {
                    "type": "string",
                    "description": "This field specifies how long a connection should be kept alive for:\n- LONG: Most of the requests are expected to take more than multiple\n  seconds to finish.\n- SHORT: Most requests are expected to finish with a sub-second latency. Possible values: [\"LONG\", \"SHORT\"]\n"
                }
            },
            "type": "object",
            "required": [
                "balancingMode",
                "capacityScaler",
                "customMetrics",
                "description",
                "group",
                "maxConnections",
                "maxConnectionsPerEndpoint",
                "maxConnectionsPerInstance",
                "maxInFlightRequests",
                "maxInFlightRequestsPerEndpoint",
                "maxInFlightRequestsPerInstance",
                "maxRate",
                "maxRatePerEndpoint",
                "maxRatePerInstance",
                "maxUtilization",
                "preference",
                "trafficDuration"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceBackendCustomMetric:getBackendServiceBackendCustomMetric": {
            "properties": {
                "dryRun": {
                    "type": "boolean",
                    "description": "If true, the metric data is collected and reported to Cloud\nMonitoring, but is not used for load balancing.\n"
                },
                "maxUtilization": {
                    "type": "number",
                    "description": "Optional parameter to define a target utilization for the Custom Metrics\nbalancing mode. The valid range is \u003ccode\u003e[0.0, 1.0]\u003c/code\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Backend Service.\n\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "dryRun",
                "maxUtilization",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceCdnPolicy:getBackendServiceCdnPolicy": {
            "properties": {
                "bypassCacheOnRequestHeaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceCdnPolicyBypassCacheOnRequestHeader:getBackendServiceCdnPolicyBypassCacheOnRequestHeader"
                    },
                    "description": "Bypass the cache when the specified request headers are matched - e.g. Pragma or Authorization headers. Up to 5 headers can be specified.\nThe cache is bypassed for all cdnPolicy.cacheMode settings.\n"
                },
                "cacheKeyPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceCdnPolicyCacheKeyPolicy:getBackendServiceCdnPolicyCacheKeyPolicy"
                    },
                    "description": "The CacheKeyPolicy for this CdnPolicy.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this backend.\nThe possible values are: USE_ORIGIN_HEADERS, FORCE_CACHE_ALL and CACHE_ALL_STATIC Possible values: [\"USE_ORIGIN_HEADERS\", \"FORCE_CACHE_ALL\", \"CACHE_ALL_STATIC\"]\n"
                },
                "clientTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin.\n"
                },
                "defaultTtl": {
                    "type": "integer",
                    "description": "Specifies the default TTL for cached content served by this origin for responses\nthat do not have an existing valid TTL (max-age or s-max-age).\n"
                },
                "maxTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply fine-grained caching for common errors or redirects.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceCdnPolicyNegativeCachingPolicy:getBackendServiceCdnPolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching must be enabled to configure negativeCachingPolicy.\nOmitting the policy and leaving negativeCaching enabled will use Cloud CDN's default cache TTLs.\n"
                },
                "requestCoalescing": {
                    "type": "boolean",
                    "description": "If true then Cloud CDN will combine multiple concurrent cache fill requests into a small number of requests\nto the origin.\n"
                },
                "serveWhileStale": {
                    "type": "integer",
                    "description": "Serve existing content from the cache (if available) when revalidating content with the origin, or when an error is encountered when refreshing the cache.\n"
                },
                "signedUrlCacheMaxAgeSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the response to a signed URL request\nwill be considered fresh, defaults to 1hr (3600s). After this\ntime period, the response will be revalidated before\nbeing served.\n\nWhen serving responses to signed URL requests, Cloud CDN will\ninternally behave as though all responses from this backend had a\n\"Cache-Control: public, max-age=[TTL]\" header, regardless of any\nexisting Cache-Control header. The actual headers served in\nresponses will not be altered.\n"
                }
            },
            "type": "object",
            "required": [
                "bypassCacheOnRequestHeaders",
                "cacheKeyPolicies",
                "cacheMode",
                "clientTtl",
                "defaultTtl",
                "maxTtl",
                "negativeCaching",
                "negativeCachingPolicies",
                "requestCoalescing",
                "serveWhileStale",
                "signedUrlCacheMaxAgeSec"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceCdnPolicyBypassCacheOnRequestHeader:getBackendServiceCdnPolicyBypassCacheOnRequestHeader": {
            "properties": {
                "headerName": {
                    "type": "string",
                    "description": "The header field name to match on when bypassing cache. Values are case-insensitive.\n"
                }
            },
            "type": "object",
            "required": [
                "headerName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceCdnPolicyCacheKeyPolicy:getBackendServiceCdnPolicyCacheKeyPolicy": {
            "properties": {
                "includeHost": {
                    "type": "boolean",
                    "description": "If true requests to different hosts will be cached separately.\n"
                },
                "includeHttpHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allows HTTP request headers (by name) to be used in the\ncache key.\n"
                },
                "includeNamedCookies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of cookies to include in cache keys.\n"
                },
                "includeProtocol": {
                    "type": "boolean",
                    "description": "If true, http and https requests will be cached separately.\n"
                },
                "includeQueryString": {
                    "type": "boolean",
                    "description": "If true, include query string parameters in the cache key\naccording to\u003cspan pulumi-lang-nodejs=\" queryStringWhitelist \" pulumi-lang-dotnet=\" QueryStringWhitelist \" pulumi-lang-go=\" queryStringWhitelist \" pulumi-lang-python=\" query_string_whitelist \" pulumi-lang-yaml=\" queryStringWhitelist \" pulumi-lang-java=\" queryStringWhitelist \" pulumi-lang-hcl=\" query_string_whitelist \"\u003e queryStringWhitelist \u003c/span\u003eand\nquery_string_blacklist. If neither is set, the entire query\nstring will be included.\n\nIf false, the query string will be excluded from the cache\nkey entirely.\n"
                },
                "queryStringBlacklists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to exclude in cache keys.\n\nAll other parameters will be included. Either specify\u003cspan pulumi-lang-nodejs=\"\nqueryStringWhitelist \" pulumi-lang-dotnet=\"\nQueryStringWhitelist \" pulumi-lang-go=\"\nqueryStringWhitelist \" pulumi-lang-python=\"\nquery_string_whitelist \" pulumi-lang-yaml=\"\nqueryStringWhitelist \" pulumi-lang-java=\"\nqueryStringWhitelist \" pulumi-lang-hcl=\"\nquery_string_whitelist \"\u003e\nqueryStringWhitelist \u003c/span\u003eor query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.\n"
                },
                "queryStringWhitelists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys.\n\nAll other parameters will be excluded. Either specify\u003cspan pulumi-lang-nodejs=\"\nqueryStringWhitelist \" pulumi-lang-dotnet=\"\nQueryStringWhitelist \" pulumi-lang-go=\"\nqueryStringWhitelist \" pulumi-lang-python=\"\nquery_string_whitelist \" pulumi-lang-yaml=\"\nqueryStringWhitelist \" pulumi-lang-java=\"\nqueryStringWhitelist \" pulumi-lang-hcl=\"\nquery_string_whitelist \"\u003e\nqueryStringWhitelist \u003c/span\u003eor query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.\n"
                }
            },
            "type": "object",
            "required": [
                "includeHost",
                "includeHttpHeaders",
                "includeNamedCookies",
                "includeProtocol",
                "includeQueryString",
                "queryStringBlacklists",
                "queryStringWhitelists"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceCdnPolicyNegativeCachingPolicy:getBackendServiceCdnPolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 308, 404, 405, 410, 421, 451 and 501\ncan be specified as values, and you cannot specify a status code more than once.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s\n(30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "ttl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceCircuitBreaker:getBackendServiceCircuitBreaker": {
            "properties": {
                "connectTimeouts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceCircuitBreakerConnectTimeout:getBackendServiceCircuitBreakerConnectTimeout"
                    },
                    "description": "The timeout for new network connections to hosts.\n"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "The maximum number of connections to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxPendingRequests": {
                    "type": "integer",
                    "description": "The maximum number of pending requests to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxRequests": {
                    "type": "integer",
                    "description": "The maximum number of parallel requests to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxRequestsPerConnection": {
                    "type": "integer",
                    "description": "Maximum requests for a single backend connection. This parameter\nis respected by both the HTTP/1.1 and HTTP/2 implementations. If\nnot specified, there is no limit. Setting this parameter to 1\nwill effectively disable keep alive.\n"
                },
                "maxRetries": {
                    "type": "integer",
                    "description": "The maximum number of parallel retries to the backend cluster.\nDefaults to 3.\n"
                }
            },
            "type": "object",
            "required": [
                "connectTimeouts",
                "maxConnections",
                "maxPendingRequests",
                "maxRequests",
                "maxRequestsPerConnection",
                "maxRetries"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceCircuitBreakerConnectTimeout:getBackendServiceCircuitBreakerConnectTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceConsistentHash:getBackendServiceConsistentHash": {
            "properties": {
                "httpCookies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceConsistentHashHttpCooky:getBackendServiceConsistentHashHttpCooky"
                    },
                    "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie\nthat will be used as the hash key for the consistent hash load\nbalancer. If the cookie is not present, it will be generated.\nThis field is applicable if the sessionAffinity is set to HTTP_COOKIE.\n"
                },
                "httpHeaderName": {
                    "type": "string",
                    "description": "The hash based on the value of the specified header field.\nThis field is applicable if the sessionAffinity is set to HEADER_FIELD.\n"
                },
                "minimumRingSize": {
                    "type": "integer",
                    "description": "The minimum number of virtual nodes to use for the hash ring.\nLarger ring sizes result in more granular load\ndistributions. If the number of hosts in the load balancing pool\nis larger than the ring size, each host will be assigned a single\nvirtual node.\nDefaults to 1024.\n"
                }
            },
            "type": "object",
            "required": [
                "httpCookies",
                "httpHeaderName",
                "minimumRingSize"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceConsistentHashHttpCooky:getBackendServiceConsistentHashHttpCooky": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Backend Service.\n\n- - -\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to set for the cookie.\n"
                },
                "ttls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceConsistentHashHttpCookyTtl:getBackendServiceConsistentHashHttpCookyTtl"
                    },
                    "description": "Lifetime of the cookie.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "path",
                "ttls"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceConsistentHashHttpCookyTtl:getBackendServiceConsistentHashHttpCookyTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceCustomMetric:getBackendServiceCustomMetric": {
            "properties": {
                "dryRun": {
                    "type": "boolean",
                    "description": "If true, the metric data is not used for load balancing.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Backend Service.\n\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "dryRun",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceDynamicForwarding:getBackendServiceDynamicForwarding": {
            "properties": {
                "ipPortSelections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceDynamicForwardingIpPortSelection:getBackendServiceDynamicForwardingIpPortSelection"
                    },
                    "description": "IP:PORT based dynamic forwarding configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "ipPortSelections"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceDynamicForwardingIpPortSelection:getBackendServiceDynamicForwardingIpPortSelection": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "A boolean flag enabling IP:PORT based dynamic forwarding.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceIap:getBackendServiceIap": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.\n"
                },
                "oauth2ClientId": {
                    "type": "string",
                    "description": "OAuth2 Client ID for IAP\n"
                },
                "oauth2ClientSecret": {
                    "type": "string",
                    "description": "OAuth2 Client Secret for IAP\n"
                },
                "oauth2ClientSecretSha256": {
                    "type": "string",
                    "description": "OAuth2 Client Secret SHA-256 for IAP\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "oauth2ClientId",
                "oauth2ClientSecret",
                "oauth2ClientSecretSha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceLocalityLbPolicy:getBackendServiceLocalityLbPolicy": {
            "properties": {
                "customPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceLocalityLbPolicyCustomPolicy:getBackendServiceLocalityLbPolicyCustomPolicy"
                    },
                    "description": "The configuration for a custom policy implemented by the user and\ndeployed with the client.\n"
                },
                "policies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceLocalityLbPolicyPolicy:getBackendServiceLocalityLbPolicyPolicy"
                    },
                    "description": "The configuration for a built-in load balancing policy.\n"
                }
            },
            "type": "object",
            "required": [
                "customPolicies",
                "policies"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceLocalityLbPolicyCustomPolicy:getBackendServiceLocalityLbPolicyCustomPolicy": {
            "properties": {
                "data": {
                    "type": "string",
                    "description": "An optional, arbitrary JSON object with configuration data, understood\nby a locally installed custom policy implementation.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Backend Service.\n\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "data",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceLocalityLbPolicyPolicy:getBackendServiceLocalityLbPolicyPolicy": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Backend Service.\n\n- - -\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceLogConfig:getBackendServiceLogConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "Whether to enable logging for the load balancer traffic served by this backend service.\n"
                },
                "optionalFields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "This field can only be specified if logging is enabled for this backend service and \"logConfig.optionalMode\"\nwas set to CUSTOM. Contains a list of optional fields you want to include in the logs.\nFor example: serverInstance, serverGkeDetails.cluster, serverGkeDetails.pod.podNamespace\nFor example: orca_load_report, tls.protocol\n"
                },
                "optionalMode": {
                    "type": "string",
                    "description": "Specifies the optional logging mode for the load balancer traffic.\nSupported values: INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM. Possible values: [\"INCLUDE_ALL_OPTIONAL\", \"EXCLUDE_ALL_OPTIONAL\", \"CUSTOM\"]\n"
                },
                "sampleRate": {
                    "type": "number",
                    "description": "This field can only be specified if logging is enabled for this backend service. The value of\nthe field must be in [0, 1]. This configures the sampling rate of requests to the load balancer\nwhere 1.0 means all logged requests are reported and 0.0 means no logged requests are reported.\nThe default value is 1.0.\n"
                }
            },
            "type": "object",
            "required": [
                "enable",
                "optionalFields",
                "optionalMode",
                "sampleRate"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceMaxStreamDuration:getBackendServiceMaxStreamDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution.\nDurations less than one second are represented with a 0 seconds field and a positive nanos field.\nMust be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "string",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. (int64 format)\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceNetworkPassThroughLbTrafficPolicy:getBackendServiceNetworkPassThroughLbTrafficPolicy": {
            "properties": {
                "zonalAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity:getBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity"
                    },
                    "description": "When configured, new connections are load balanced across healthy backend endpoints in the local zone.\n"
                }
            },
            "type": "object",
            "required": [
                "zonalAffinities"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity:getBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity": {
            "properties": {
                "spillover": {
                    "type": "string",
                    "description": "This field indicates whether zonal affinity is enabled or not. Default value: \"ZONAL_AFFINITY_DISABLED\" Possible values: [\"ZONAL_AFFINITY_DISABLED\", \"ZONAL_AFFINITY_SPILL_CROSS_ZONE\", \"ZONAL_AFFINITY_STAY_WITHIN_ZONE\"]\n"
                },
                "spilloverRatio": {
                    "type": "number",
                    "description": "The value of the field must be in [0, 1]. When the ratio of the count of healthy backend endpoints in a zone\nto the count of backend endpoints in that same zone is equal to or above this threshold, the load balancer\ndistributes new connections to all healthy endpoints in the local zone only. When the ratio of the count\nof healthy backend endpoints in a zone to the count of backend endpoints in that same zone is below this\nthreshold, the load balancer distributes all new connections to all healthy endpoints across all zones.\n"
                }
            },
            "type": "object",
            "required": [
                "spillover",
                "spilloverRatio"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceOutlierDetection:getBackendServiceOutlierDetection": {
            "properties": {
                "baseEjectionTimes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceOutlierDetectionBaseEjectionTime:getBackendServiceOutlierDetectionBaseEjectionTime"
                    },
                    "description": "The base time that a host is ejected for. The real time is equal to the base\ntime multiplied by the number of times the host has been ejected. Defaults to\n30000ms or 30s.\n"
                },
                "consecutiveErrors": {
                    "type": "integer",
                    "description": "Number of errors before a host is ejected from the connection pool. When the\nbackend host is accessed over HTTP, a 5xx return code qualifies as an error.\nDefaults to 5.\n"
                },
                "consecutiveGatewayFailure": {
                    "type": "integer",
                    "description": "The number of consecutive gateway failures (502, 503, 504 status or connection\nerrors that are mapped to one of those status codes) before a consecutive\ngateway failure ejection occurs. Defaults to 5.\n"
                },
                "enforcingConsecutiveErrors": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive 5xx. This setting can be used to disable\nejection or to ramp it up slowly. Defaults to 100.\n"
                },
                "enforcingConsecutiveGatewayFailure": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive gateway failures. This setting can be\nused to disable ejection or to ramp it up slowly. Defaults to 0.\n"
                },
                "enforcingSuccessRate": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through success rate statistics. This setting can be used to\ndisable ejection or to ramp it up slowly. Defaults to 100.\n"
                },
                "intervals": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceOutlierDetectionInterval:getBackendServiceOutlierDetectionInterval"
                    },
                    "description": "Time interval between ejection sweep analysis. This can result in both new\nejections as well as hosts being returned to service. Defaults to 10 seconds.\n"
                },
                "maxEjectionPercent": {
                    "type": "integer",
                    "description": "Maximum percentage of hosts in the load balancing pool for the backend service\nthat can be ejected. Defaults to 10%.\n"
                },
                "successRateMinimumHosts": {
                    "type": "integer",
                    "description": "The number of hosts in a cluster that must have enough request volume to detect\nsuccess rate outliers. If the number of hosts is less than this setting, outlier\ndetection via success rate statistics is not performed for any host in the\ncluster. Defaults to 5.\n"
                },
                "successRateRequestVolume": {
                    "type": "integer",
                    "description": "The minimum number of total requests that must be collected in one interval (as\ndefined by the interval duration above) to include this host in success rate\nbased outlier detection. If the volume is lower than this setting, outlier\ndetection via success rate statistics is not performed for that host. Defaults\nto 100.\n"
                },
                "successRateStdevFactor": {
                    "type": "integer",
                    "description": "This factor is used to determine the ejection threshold for success rate outlier\nejection. The ejection threshold is the difference between the mean success\nrate, and the product of this factor and the standard deviation of the mean\nsuccess rate: mean - (stdev * success_rate_stdev_factor). This factor is divided\nby a thousand to get a double. That is, if the desired factor is 1.9, the\nruntime value should be 1900. Defaults to 1900.\n"
                }
            },
            "type": "object",
            "required": [
                "baseEjectionTimes",
                "consecutiveErrors",
                "consecutiveGatewayFailure",
                "enforcingConsecutiveErrors",
                "enforcingConsecutiveGatewayFailure",
                "enforcingSuccessRate",
                "intervals",
                "maxEjectionPercent",
                "successRateMinimumHosts",
                "successRateRequestVolume",
                "successRateStdevFactor"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceOutlierDetectionBaseEjectionTime:getBackendServiceOutlierDetectionBaseEjectionTime": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceOutlierDetectionInterval:getBackendServiceOutlierDetectionInterval": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceParam:getBackendServiceParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the backend service. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceSecuritySetting:getBackendServiceSecuritySetting": {
            "properties": {
                "awsV4Authentications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceSecuritySettingAwsV4Authentication:getBackendServiceSecuritySettingAwsV4Authentication"
                    },
                    "description": "The configuration needed to generate a signature for access to private storage buckets that support AWS's Signature Version 4 for authentication.\nAllowed only for INTERNET_IP_PORT and INTERNET_FQDN_PORT NEG backends.\n"
                },
                "clientTlsPolicy": {
                    "type": "string",
                    "description": "ClientTlsPolicy is a resource that specifies how a client should authenticate\nconnections to backends of a service. This resource itself does not affect\nconfiguration unless it is attached to a backend service resource.\n"
                },
                "subjectAltNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of alternate names to verify the subject identity in the certificate.\nIf specified, the client will verify that the server certificate's subject\nalt name matches one of the specified values.\n"
                }
            },
            "type": "object",
            "required": [
                "awsV4Authentications",
                "clientTlsPolicy",
                "subjectAltNames"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceSecuritySettingAwsV4Authentication:getBackendServiceSecuritySettingAwsV4Authentication": {
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key used for s3 bucket authentication.\nRequired for updating or creating a backend that uses AWS v4 signature authentication, but will not be returned as part of the configuration when queried with a REST API GET request.\n"
                },
                "accessKeyId": {
                    "type": "string",
                    "description": "The identifier of an access key used for s3 bucket authentication.\n"
                },
                "accessKeyVersion": {
                    "type": "string",
                    "description": "The optional version identifier for the access key. You can use this to keep track of different iterations of your access key.\n"
                },
                "originRegion": {
                    "type": "string",
                    "description": "The name of the cloud region of your origin. This is a free-form field with the name of the region your cloud uses to host your origin.\nFor example, \"us-east-1\" for AWS or \"us-ashburn-1\" for OCI.\n"
                }
            },
            "type": "object",
            "required": [
                "accessKey",
                "accessKeyId",
                "accessKeyVersion",
                "originRegion"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceStrongSessionAffinityCooky:getBackendServiceStrongSessionAffinityCooky": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the Backend Service.\n\n- - -\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to set for the cookie.\n"
                },
                "ttls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceStrongSessionAffinityCookyTtl:getBackendServiceStrongSessionAffinityCookyTtl"
                    },
                    "description": "Lifetime of the cookie.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "path",
                "ttls"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceStrongSessionAffinityCookyTtl:getBackendServiceStrongSessionAffinityCookyTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceTlsSetting:getBackendServiceTlsSetting": {
            "properties": {
                "authenticationConfig": {
                    "type": "string",
                    "description": "Reference to the BackendAuthenticationConfig resource from the networksecurity.googleapis.com namespace.\nCan be used in authenticating TLS connections to the backend, as specified by the authenticationMode field.\nCan only be specified if authenticationMode is not NONE.\n"
                },
                "sni": {
                    "type": "string",
                    "description": "Server Name Indication - see RFC3546 section 3.1. If set, the load balancer sends this string as the SNI hostname in the\nTLS connection to the backend, and requires that this string match a Subject Alternative Name (SAN) in the backend's\nserver certificate. With a Regional Internet NEG backend, if the SNI is specified here, the load balancer uses it\nregardless of whether the Regional Internet NEG is specified with FQDN or IP address and port.\n"
                },
                "subjectAltNames": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getBackendServiceTlsSettingSubjectAltName:getBackendServiceTlsSettingSubjectAltName"
                    },
                    "description": "A list of Subject Alternative Names (SANs) that the Load Balancer verifies during a TLS handshake with the backend.\nWhen the server presents its X.509 certificate to the Load Balancer, the Load Balancer inspects the certificate's SAN field,\nand requires that at least one SAN match one of the subjectAltNames in the list. This field is limited to 5 entries.\nWhen both sni and subjectAltNames are specified, the load balancer matches the backend certificate's SAN only to\nsubjectAltNames.\n"
                }
            },
            "type": "object",
            "required": [
                "authenticationConfig",
                "sni",
                "subjectAltNames"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getBackendServiceTlsSettingSubjectAltName:getBackendServiceTlsSettingSubjectAltName": {
            "properties": {
                "dnsName": {
                    "type": "string",
                    "description": "The SAN specified as a DNS Name.\n"
                },
                "uniformResourceIdentifier": {
                    "type": "string",
                    "description": "The SAN specified as a URI.\n"
                }
            },
            "type": "object",
            "required": [
                "dnsName",
                "uniformResourceIdentifier"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getDiskAsyncPrimaryDisk:getDiskAsyncPrimaryDisk": {
            "properties": {
                "disk": {
                    "type": "string",
                    "description": "Primary disk for asynchronous disk replication.\n"
                }
            },
            "type": "object",
            "required": [
                "disk"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getDiskDiskEncryptionKey:getDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n('service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getDiskGuestOsFeature:getDiskGuestOsFeature": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "URL of the disk type resource describing which disk type to use to\ncreate the disk.\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getDiskParam:getDiskParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the disk. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getDiskSourceImageEncryptionKey:getDiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n('service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getDiskSourceSnapshotEncryptionKey:getDiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n('service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getForwardingRuleServiceDirectoryRegistration:getForwardingRuleServiceDirectoryRegistration": {
            "properties": {
                "namespace": {
                    "type": "string",
                    "description": "Service Directory namespace to register the forwarding rule under.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Service Directory service to register the forwarding rule under.\n"
                }
            },
            "type": "object",
            "required": [
                "namespace",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getForwardingRulesRule:getForwardingRulesRule": {
            "properties": {
                "allPorts": {
                    "type": "boolean",
                    "description": "The 'ports', 'portRange', and 'allPorts' fields are mutually exclusive.\nOnly packets addressed to ports in the specified range will be forwarded\nto the backends configured with this forwarding rule.\n\nThe 'allPorts' field has the following limitations:\n* It requires that the forwarding rule 'IPProtocol' be TCP, UDP, SCTP, or\nL3_DEFAULT.\n* It's applicable only to the following products: internal passthrough\nNetwork Load Balancers, backend service-based external passthrough Network\nLoad Balancers, and internal and external protocol forwarding.\n* Set this field to true to allow packets addressed to any port or packets\nlacking destination port information (for example, UDP fragments after the\nfirst fragment) to be forwarded to the backends configured with this\nforwarding rule. The L3_DEFAULT protocol requires 'allPorts' be set to\ntrue.\n"
                },
                "allowGlobalAccess": {
                    "type": "boolean",
                    "description": "This field is used along with the 'backend_service' field for\ninternal load balancing or with the 'target' field for internal\nTargetInstance.\n\nIf the field is set to 'TRUE', clients can access ILB from all\nregions.\n\nOtherwise only allows access from clients in the same region as the\ninternal load balancer.\n"
                },
                "allowPscGlobalAccess": {
                    "type": "boolean",
                    "description": "This is used in PSC consumer ForwardingRule to control whether the PSC endpoint can be accessed from another region.\n"
                },
                "backendService": {
                    "type": "string",
                    "description": "Identifies the backend service to which the forwarding rule sends traffic.\n\nRequired for Internal TCP/UDP Load Balancing and Network Load Balancing;\nmust be omitted for all other load balancer types.\n"
                },
                "baseForwardingRule": {
                    "type": "string",
                    "description": "[Output Only] The URL for the corresponding base Forwarding Rule. By base Forwarding Rule, we mean the Forwarding Rule that has the same IP address, protocol, and port settings with the current Forwarding Rule, but without sourceIPRanges specified. Always empty if the current Forwarding Rule does not have sourceIPRanges specified.\n"
                },
                "creationTimestamp": {
                    "type": "string",
                    "description": "Creation timestamp in RFC3339 text format.\n"
                },
                "deletionPolicy": {
                    "type": "string",
                    "description": "Whether Terraform will be prevented from destroying the instance. Defaults to \"DELETE\".\nWhen a 'terraform destroy' or 'terraform apply' would delete the instance,\nthe command will fail if this field is set to \"PREVENT\" in Terraform state.\nWhen set to \"ABANDON\", the command will remove the resource from Terraform\nmanagement without updating or deleting the resource in the API.\nWhen set to \"DELETE\", deleting the resource is allowed.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource. Provide this property when\nyou create the resource.\n"
                },
                "effectiveLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.\n",
                    "secret": true
                },
                "forwardingRuleId": {
                    "type": "integer",
                    "description": "The unique identifier number for the resource. This identifier is defined by the server.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "IP address for which this forwarding rule accepts traffic. When a client\nsends traffic to this IP address, the forwarding rule directs the traffic\nto the referenced 'target' or 'backendService'.\n\nWhile creating a forwarding rule, specifying an 'IPAddress' is\nrequired under the following circumstances:\n\n* When the 'target' is set to 'targetGrpcProxy' and\n'validateForProxyless' is set to 'true', the\n'IPAddress' should be set to '0.0.0.0'.\n* When the 'target' is a Private Service Connect Google APIs\nbundle, you must specify an 'IPAddress'.\n\nOtherwise, you can optionally specify an IP address that references an\nexisting static (reserved) IP address resource. When omitted, Google Cloud\nassigns an ephemeral IP address.\n\nUse one of the following formats to specify an IP address while creating a\nforwarding rule:\n\n* IP address number, as in '100.1.2.3'\n* IPv6 address range, as in '2600:1234::/96'\n* Full resource URL, as in\n'https://www.googleapis.com/compute/v1/projects/project_id/regions/region/addresses/address-name'\n* Partial URL or by name, as in:\n  * 'projects/project_id/regions/region/addresses/address-name'\n  * 'regions/region/addresses/address-name'\n  * 'global/addresses/address-name'\n  * 'address-name'\n\nThe forwarding rule's 'target' or 'backendService',\nand in most cases, also the 'loadBalancingScheme', determine the\ntype of IP address that you can use. For detailed information, see\n[IP address\nspecifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications).\n\nWhen reading an 'IPAddress', the API always returns the IP\naddress number.\n"
                },
                "ipCollection": {
                    "type": "string",
                    "description": "Resource reference of a PublicDelegatedPrefix. The PDP must be a sub-PDP\nin EXTERNAL_IPV6_FORWARDING_RULE_CREATION mode.\nUse one of the following formats to specify a sub-PDP when creating an\nIPv6 NetLB forwarding rule using BYOIP:\nFull resource URL, as in:\n  * 'https://www.googleapis.com/compute/v1/projects/{{projectId}}/regions/{{region}}/publicDelegatedPrefixes/{{sub-pdp-name}}'\nPartial URL, as in:\n  * 'projects/{{projectId}}/regions/region/publicDelegatedPrefixes/{{sub-pdp-name}}'\n  * 'regions/{{region}}/publicDelegatedPrefixes/{{sub-pdp-name}}'\n"
                },
                "ipProtocol": {
                    "type": "string",
                    "description": "The IP protocol to which this rule applies.\n\nFor protocol forwarding, valid\noptions are 'TCP', 'UDP', 'ESP',\n'AH', 'SCTP', 'ICMP' and\n'L3_DEFAULT'.\n\nThe valid IP protocols are different for different load balancing products\nas described in [Load balancing\nfeatures](https://cloud.google.com/load-balancing/docs/features#protocols_from_the_load_balancer_to_the_backends).\n\nA Forwarding Rule with protocol L3_DEFAULT can attach with target instance or\nbackend service with UNSPECIFIED protocol.\nA forwarding rule with \"L3_DEFAULT\" IPProtocal cannot be attached to a backend service with TCP or UDP. Possible values: [\"TCP\", \"UDP\", \"ESP\", \"AH\", \"SCTP\", \"ICMP\", \"L3_DEFAULT\"]\n"
                },
                "ipVersion": {
                    "type": "string",
                    "description": "The IP address version that will be used by this forwarding rule.\nValid options are IPV4 and IPV6.\n\nIf not set, the IPv4 address will be used by default. Possible values: [\"IPV4\", \"IPV6\"]\n"
                },
                "isMirroringCollector": {
                    "type": "boolean",
                    "description": "Indicates whether or not this load balancer can be used as a collector for\npacket mirroring. To prevent mirroring loops, instances behind this\nload balancer will not have their traffic mirrored even if a\n'PacketMirroring' rule applies to them.\n\nThis can only be set to true for load balancers that have their\n'loadBalancingScheme' set to 'INTERNAL'.\n"
                },
                "labelFingerprint": {
                    "type": "string",
                    "description": "The fingerprint used for optimistic locking of this resource.  Used\ninternally during updates.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Labels to apply to this forwarding rule.  A list of key-\u003evalue pairs.\n\n\n**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.\nPlease refer to the field 'effective_labels' for all of the labels present on the resource.\n"
                },
                "loadBalancingScheme": {
                    "type": "string",
                    "description": "Specifies the forwarding rule type.\n\nNote that an empty string value ('\"\"') is also supported for some use\ncases, for example PSC (private service connection) regional forwarding\nrules.\n\nFor more information about forwarding rules, refer to\n[Forwarding rule concepts](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts). Default value: \"EXTERNAL\" Possible values: [\"EXTERNAL\", \"EXTERNAL_MANAGED\", \"INTERNAL\", \"INTERNAL_MANAGED\"]\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the resource; provided by the client when the resource is created.\nThe name must be 1-63 characters long, and comply with\n[RFC1035](https://www.ietf.org/rfc/rfc1035.txt).\n\nSpecifically, the name must be 1-63 characters long and match the regular\nexpression 'a-z?' which means the first\ncharacter must be a lowercase letter, and all following characters must\nbe a dash, lowercase letter, or digit, except the last character, which\ncannot be a dash.\n\nFor Private Service Connect forwarding rules that forward traffic to Google\nAPIs, the forwarding rule name must be a 1-20 characters string with\nlowercase letters and numbers and must start with a letter.\n"
                },
                "network": {
                    "type": "string",
                    "description": "This field is not used for external load balancing.\n\nFor Internal TCP/UDP Load Balancing, this field identifies the network that\nthe load balanced IP should belong to for this Forwarding Rule.\nIf the subnetwork is specified, the network of the subnetwork will be used.\nIf neither subnetwork nor this field is specified, the default network will\nbe used.\n\nFor Private Service Connect forwarding rules that forward traffic to Google\nAPIs, a network must be provided.\n"
                },
                "networkTier": {
                    "type": "string",
                    "description": "This signifies the networking tier used for configuring\nthis load balancer and can only take the following values:\n'PREMIUM', 'STANDARD'.\n\nFor regional ForwardingRule, the valid values are 'PREMIUM' and\n'STANDARD'. For GlobalForwardingRule, the valid value is\n'PREMIUM'.\n\nIf this field is not specified, it is assumed to be 'PREMIUM'.\nIf 'IPAddress' is specified, this value must be equal to the\nnetworkTier of the Address. Possible values: [\"PREMIUM\", \"STANDARD\"]\n"
                },
                "noAutomateDnsZone": {
                    "type": "boolean",
                    "description": "This is used in PSC consumer ForwardingRule to control whether it should try to auto-generate a DNS zone or not. Non-PSC forwarding rules do not use this field.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "The 'ports', 'portRange', and 'allPorts' fields are mutually exclusive.\nOnly packets addressed to ports in the specified range will be forwarded\nto the backends configured with this forwarding rule.\n\nThe 'portRange' field has the following limitations:\n* It requires that the forwarding rule 'IPProtocol' be TCP, UDP, or SCTP,\nand\n* It's applicable only to the following products: external passthrough\nNetwork Load Balancers, internal and external proxy Network Load\nBalancers, internal and external Application Load Balancers, external\nprotocol forwarding, and Classic VPN.\n* Some products have restrictions on what ports can be used. See\n[port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#port_specifications)\nfor details.\n\nFor external forwarding rules, two or more forwarding rules cannot use the\nsame '[IPAddress, IPProtocol]' pair, and cannot have overlapping\n'portRange's.\n\nFor internal forwarding rules within the same VPC network, two or more\nforwarding rules cannot use the same '[IPAddress, IPProtocol]' pair, and\ncannot have overlapping 'portRange's.\n\n@pattern: \\d+(?:-\\d+)?\n"
                },
                "ports": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The 'ports', 'portRange', and 'allPorts' fields are mutually exclusive.\nOnly packets addressed to ports in the specified range will be forwarded\nto the backends configured with this forwarding rule.\n\nThe 'ports' field has the following limitations:\n* It requires that the forwarding rule 'IPProtocol' be TCP, UDP, or SCTP,\nand\n* It's applicable only to the following products: internal passthrough\nNetwork Load Balancers, backend service-based external passthrough Network\nLoad Balancers, and internal protocol forwarding.\n* You can specify a list of up to five ports by number, separated by\ncommas. The ports can be contiguous or discontiguous.\n\nFor external forwarding rules, two or more forwarding rules cannot use the\nsame '[IPAddress, IPProtocol]' pair if they share at least one port\nnumber.\n\nFor internal forwarding rules within the same VPC network, two or more\nforwarding rules cannot use the same '[IPAddress, IPProtocol]' pair if\nthey share at least one port number.\n\n@pattern: \\d+(?:-\\d+)?\n"
                },
                "project": {
                    "type": "string",
                    "description": "The name of the project.\n"
                },
                "pscConnectionId": {
                    "type": "string",
                    "description": "The PSC connection id of the PSC Forwarding Rule.\n"
                },
                "pscConnectionStatus": {
                    "type": "string",
                    "description": "The PSC connection status of the PSC Forwarding Rule. Possible values: 'STATUS_UNSPECIFIED', 'PENDING', 'ACCEPTED', 'REJECTED', 'CLOSED'\n"
                },
                "pulumiLabels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The combination of labels configured directly on the resource\n and default labels configured on the provider.\n",
                    "secret": true
                },
                "recreateClosedPsc": {
                    "type": "boolean",
                    "description": "This is used in PSC consumer ForwardingRule to make terraform recreate the ForwardingRule when the status is closed\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region you want to get the forwarding rules from.\n\nThese arguments must be set in either the provider or the resource in order for the information to be queried.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "The URI of the resource.\n"
                },
                "serviceDirectoryRegistrations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getForwardingRulesRuleServiceDirectoryRegistration:getForwardingRulesRuleServiceDirectoryRegistration"
                    },
                    "description": "Service Directory resources to register this forwarding rule with.\n\nCurrently, only supports a single Service Directory resource.\n"
                },
                "serviceLabel": {
                    "type": "string",
                    "description": "An optional prefix to the service name for this Forwarding Rule.\nIf specified, will be the first label of the fully qualified service\nname.\n\nThe label must be 1-63 characters long, and comply with RFC1035.\nSpecifically, the label must be 1-63 characters long and match the\nregular expression 'a-z?' which means the first\ncharacter must be a lowercase letter, and all following characters\nmust be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.\n\nThis field is only used for INTERNAL load balancing.\n"
                },
                "serviceName": {
                    "type": "string",
                    "description": "The internal fully qualified service name for this Forwarding Rule.\n\nThis field is only used for INTERNAL load balancing.\n"
                },
                "sourceIpRanges": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "If not empty, this Forwarding Rule will only forward the traffic when the source IP address matches one of the IP addresses or CIDR ranges set here. Note that a Forwarding Rule can only have up to 64 source IP ranges, and this field can only be used with a regional Forwarding Rule whose scheme is EXTERNAL. Each sourceIpRange entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "This field identifies the subnetwork that the load balanced IP should\nbelong to for this Forwarding Rule, used in internal load balancing and\nnetwork load balancing with IPv6.\n\nIf the network specified is in auto subnet mode, this field is optional.\nHowever, a subnetwork must be specified if the network is in custom subnet\nmode or when creating external forwarding rule with IPv6.\n"
                },
                "target": {
                    "type": "string",
                    "description": "The URL of the target resource to receive the matched traffic.  For\nregional forwarding rules, this target must be in the same region as the\nforwarding rule. For global forwarding rules, this target must be a global\nload balancing resource.\n\nThe forwarded traffic must be of a type appropriate to the target object.\n*  For load balancers, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications).\n\nFor Private Service Connect forwarding rules that forward traffic to managed services, the target must be a service attachment.\n"
                }
            },
            "type": "object",
            "required": [
                "allPorts",
                "allowGlobalAccess",
                "allowPscGlobalAccess",
                "backendService",
                "baseForwardingRule",
                "creationTimestamp",
                "deletionPolicy",
                "description",
                "effectiveLabels",
                "forwardingRuleId",
                "ipAddress",
                "ipCollection",
                "ipProtocol",
                "ipVersion",
                "isMirroringCollector",
                "labelFingerprint",
                "labels",
                "loadBalancingScheme",
                "name",
                "network",
                "networkTier",
                "noAutomateDnsZone",
                "portRange",
                "ports",
                "project",
                "pscConnectionId",
                "pscConnectionStatus",
                "recreateClosedPsc",
                "region",
                "selfLink",
                "serviceDirectoryRegistrations",
                "serviceLabel",
                "serviceName",
                "sourceIpRanges",
                "subnetwork",
                "target",
                "pulumiLabels"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getForwardingRulesRuleServiceDirectoryRegistration:getForwardingRulesRuleServiceDirectoryRegistration": {
            "properties": {
                "namespace": {
                    "type": "string",
                    "description": "Service Directory namespace to register the forwarding rule under.\n"
                },
                "service": {
                    "type": "string",
                    "description": "Service Directory service to register the forwarding rule under.\n"
                }
            },
            "type": "object",
            "required": [
                "namespace",
                "service"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getGlobalForwardingRuleMetadataFilter:getGlobalForwardingRuleMetadataFilter": {
            "properties": {
                "filterLabels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getGlobalForwardingRuleMetadataFilterFilterLabel:getGlobalForwardingRuleMetadataFilterFilterLabel"
                    },
                    "description": "The list of label value pairs that must match labels in the\nprovided metadata based on filterMatchCriteria\n\nThis list must not be empty and can have at the most 64 entries.\n"
                },
                "filterMatchCriteria": {
                    "type": "string",
                    "description": "Specifies how individual filterLabel matches within the list of\nfilterLabels contribute towards the overall metadataFilter match.\n\nMATCH_ANY - At least one of the filterLabels must have a matching\nlabel in the provided metadata.\nMATCH_ALL - All filterLabels must have matching labels in the\nprovided metadata. Possible values: [\"MATCH_ANY\", \"MATCH_ALL\"]\n"
                }
            },
            "type": "object",
            "required": [
                "filterLabels",
                "filterMatchCriteria"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getGlobalForwardingRuleMetadataFilterFilterLabel:getGlobalForwardingRuleMetadataFilterFilterLabel": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the global forwarding rule.\n\n- - -\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value that the label must match. The value has a maximum\nlength of 1024 characters.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getGlobalForwardingRuleServiceDirectoryRegistration:getGlobalForwardingRuleServiceDirectoryRegistration": {
            "properties": {
                "namespace": {
                    "type": "string",
                    "description": "Service Directory namespace to register the forwarding rule under.\n"
                },
                "serviceDirectoryRegion": {
                    "type": "string",
                    "description": "[Optional] Service Directory region to register this global forwarding rule under.\nDefault to \"us-central1\". Only used for PSC for Google APIs. All PSC for\nGoogle APIs Forwarding Rules on the same network should use the same Service\nDirectory region.\n"
                }
            },
            "type": "object",
            "required": [
                "namespace",
                "serviceDirectoryRegion"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHcVpnGatewayParam:getHcVpnGatewayParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the HaVpnGateway. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHcVpnGatewayVpnInterface:getHcVpnGatewayVpnInterface": {
            "properties": {
                "id": {
                    "type": "integer",
                    "description": "The numeric ID of this VPN gateway interface.\n"
                },
                "interconnectAttachment": {
                    "type": "string",
                    "description": "URL of the interconnect attachment resource. When the value\nof this field is present, the VPN Gateway will be used for\nIPsec-encrypted Cloud Interconnect; all Egress or Ingress\ntraffic for this VPN Gateway interface will go through the\nspecified interconnect attachment resource.\n\nNot currently available publicly.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The external IP address for this VPN gateway interface.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "interconnectAttachment",
                "ipAddress"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHealthCheckGrpcHealthCheck:getHealthCheckGrpcHealthCheck": {
            "properties": {
                "grpcServiceName": {
                    "type": "string",
                    "description": "The gRPC service name for the health check.\nThe value of grpcServiceName has the following meanings by convention:\n  - Empty serviceName means the overall status of all services at the backend.\n  - Non-empty serviceName means the health of that gRPC service, as defined by the owner of the service.\nThe grpcServiceName can only be ASCII.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number for the health check request.\nMust be specified if portName and portSpecification are not set\nor if\u003cspan pulumi-lang-nodejs=\" portSpecification \" pulumi-lang-dotnet=\" PortSpecification \" pulumi-lang-go=\" portSpecification \" pulumi-lang-python=\" port_specification \" pulumi-lang-yaml=\" portSpecification \" pulumi-lang-java=\" portSpecification \" pulumi-lang-hcl=\" port_specification \"\u003e portSpecification \u003c/span\u003eis USE_FIXED_PORT. Valid values are 1 through 65535.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, gRPC health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                }
            },
            "type": "object",
            "required": [
                "grpcServiceName",
                "port",
                "portName",
                "portSpecification"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHealthCheckGrpcTlsHealthCheck:getHealthCheckGrpcTlsHealthCheck": {
            "properties": {
                "grpcServiceName": {
                    "type": "string",
                    "description": "The gRPC service name for the health check.\nThe value of grpcServiceName has the following meanings by convention:\n  - Empty serviceName means the overall status of all services at the backend.\n  - Non-empty serviceName means the health of that gRPC service, as defined by the owner of the service.\nThe grpcServiceName can only be ASCII.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number for the health check request.\nMust be specified if\u003cspan pulumi-lang-nodejs=\" portSpecification \" pulumi-lang-dotnet=\" PortSpecification \" pulumi-lang-go=\" portSpecification \" pulumi-lang-python=\" port_specification \" pulumi-lang-yaml=\" portSpecification \" pulumi-lang-java=\" portSpecification \" pulumi-lang-hcl=\" port_specification \"\u003e portSpecification \u003c/span\u003eis USE_FIXED_PORT. Valid values are 1 through 65535.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': Not supported for GRPC with TLS health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, gRPC with TLS health check follows behavior specified in the 'port' field. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                }
            },
            "type": "object",
            "required": [
                "grpcServiceName",
                "port",
                "portSpecification"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHealthCheckHttp2HealthCheck:getHealthCheckHttp2HealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTP2 health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTP2 health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, HTTP2 health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTP2 health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object",
            "required": [
                "host",
                "port",
                "portName",
                "portSpecification",
                "proxyHeader",
                "requestPath",
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHealthCheckHttpHealthCheck:getHealthCheckHttpHealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTP health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTP health check request.\nThe default value is 80.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, HTTP health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTP health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object",
            "required": [
                "host",
                "port",
                "portName",
                "portSpecification",
                "proxyHeader",
                "requestPath",
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHealthCheckHttpsHealthCheck:getHealthCheckHttpsHealthCheck": {
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The value of the host header in the HTTPS health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the HTTPS health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, HTTPS health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]\n"
                },
                "requestPath": {
                    "type": "string",
                    "description": "The request path of the HTTPS health check request.\nThe default value is /.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object",
            "required": [
                "host",
                "port",
                "portName",
                "portSpecification",
                "proxyHeader",
                "requestPath",
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHealthCheckLogConfig:getHealthCheckLogConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "Indicates whether or not to export logs. This is false by default,\nwhich means no health check logging will be done.\n"
                }
            },
            "type": "object",
            "required": [
                "enable"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHealthCheckSslHealthCheck:getHealthCheckSslHealthCheck": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the SSL health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, SSL health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]\n"
                },
                "request": {
                    "type": "string",
                    "description": "The application data to send once the SSL connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "portName",
                "portSpecification",
                "proxyHeader",
                "request",
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getHealthCheckTcpHealthCheck:getHealthCheckTcpHealthCheck": {
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "The TCP port number for the TCP health check request.\nThe default value is 443.\n"
                },
                "portName": {
                    "type": "string",
                    "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and\u003cspan pulumi-lang-nodejs=\"\nportName \" pulumi-lang-dotnet=\"\nPortName \" pulumi-lang-go=\"\nportName \" pulumi-lang-python=\"\nport_name \" pulumi-lang-yaml=\"\nportName \" pulumi-lang-java=\"\nportName \" pulumi-lang-hcl=\"\nport_name \"\u003e\nportName \u003c/span\u003eare defined, port takes precedence.\n"
                },
                "portSpecification": {
                    "type": "string",
                    "description": "Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n  * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n  * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n  * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n  network endpoint is used for health checking. For other backends, the\n  port or named port specified in the Backend Service is used for health\n  checking.\n\nIf not specified, TCP health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]\n"
                },
                "proxyHeader": {
                    "type": "string",
                    "description": "Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]\n"
                },
                "request": {
                    "type": "string",
                    "description": "The application data to send once the TCP connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.\n"
                },
                "response": {
                    "type": "string",
                    "description": "The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "portName",
                "portSpecification",
                "proxyHeader",
                "request",
                "response"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getImagesImage:getImagesImage": {
            "properties": {
                "archiveSizeBytes": {
                    "type": "integer",
                    "description": "The size of the image tar.gz archive stored in Google Cloud Storage in bytes.\n"
                },
                "creationTimestamp": {
                    "type": "string",
                    "description": "The creation timestamp in RFC3339 text format.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this image.\n"
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "The size of the image when restored onto a persistent disk in gigabytes.\n"
                },
                "family": {
                    "type": "string",
                    "description": "The family name of the image.\n"
                },
                "imageId": {
                    "type": "integer"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "The URI of the image.\n"
                },
                "sourceDisk": {
                    "type": "string",
                    "description": "The URL of the source disk used to create this image.\n"
                },
                "sourceDiskId": {
                    "type": "string",
                    "description": "The ID value of the disk used to create this image.\n"
                },
                "sourceImageId": {
                    "type": "string",
                    "description": "The ID value of the image used to create this image.\n"
                }
            },
            "type": "object",
            "required": [
                "archiveSizeBytes",
                "creationTimestamp",
                "description",
                "diskSizeGb",
                "family",
                "imageId",
                "labels",
                "name",
                "selfLink",
                "sourceDisk",
                "sourceDiskId",
                "sourceImageId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceAdvancedMachineFeature:getInstanceAdvancedMachineFeature": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Whether to enable nested virtualization or not.\n"
                },
                "enableUefiNetworking": {
                    "type": "boolean",
                    "description": "Whether to enable UEFI networking for the instance.\n"
                },
                "performanceMonitoringUnit": {
                    "type": "string",
                    "description": "The PMU is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are \"STANDARD\", \"ENHANCED\", and \"ARCHITECTURAL\".\n"
                },
                "threadsPerCore": {
                    "type": "integer",
                    "description": "The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.\n"
                },
                "turboMode": {
                    "type": "string",
                    "description": "Turbo frequency mode to use for the instance. Currently supported modes is \"ALL_CORE_MAX\".\n"
                },
                "visibleCoreCount": {
                    "type": "integer",
                    "description": "The number of physical cores to expose to an instance. Multiply by the number of threads per core to compute the total number of virtual CPUs to expose to the instance. If unset, the number of cores is inferred from the instance\\'s nominal CPU count and the underlying platform\\'s SMT width.\n"
                }
            },
            "type": "object",
            "required": [
                "enableNestedVirtualization",
                "enableUefiNetworking",
                "performanceMonitoringUnit",
                "threadsPerCore",
                "turboMode",
                "visibleCoreCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceAttachedDisk:getInstanceAttachedDisk": {
            "properties": {
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk is accessible\nunder `/dev/disk/by-id/`\n"
                },
                "diskEncryptionKeyRaw": {
                    "type": "string",
                    "description": "A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n"
                },
                "diskEncryptionKeyRsa": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n"
                },
                "diskEncryptionKeySha256": {
                    "type": "string",
                    "description": "The [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nencoded SHA-256 hash of the [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) that protects this resource.\n"
                },
                "diskEncryptionServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used\n"
                },
                "forceAttach": {
                    "type": "boolean",
                    "description": "Whether to force attach the regional disk even if it's currently attached to another instance. If you try to force attach a zonal disk to an instance, you will receive an error. Setting this parameter cause VM recreation.\n"
                },
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003emay be set.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Read/write mode for the disk. One of `\"READ_ONLY\"` or `\"READ_WRITE\"`.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the disk attached to this instance.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceName",
                "diskEncryptionKeyRaw",
                "diskEncryptionKeyRsa",
                "diskEncryptionKeySha256",
                "diskEncryptionServiceAccount",
                "forceAttach",
                "kmsKeySelfLink",
                "mode",
                "source"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceBootDisk:getInstanceBootDisk": {
            "properties": {
                "autoDelete": {
                    "type": "boolean",
                    "description": "Whether the disk will be auto-deleted when the instance is deleted.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk is accessible\nunder `/dev/disk/by-id/`\n"
                },
                "diskEncryptionKeyRaw": {
                    "type": "string",
                    "description": "A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n"
                },
                "diskEncryptionKeyRsa": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n"
                },
                "diskEncryptionKeySha256": {
                    "type": "string",
                    "description": "The [RFC 4648 base64](https://tools.ietf.org/html/rfc4648#section-4)\nencoded SHA-256 hash of the [customer-supplied encryption key](https://cloud.google.com/compute/docs/disks/customer-supplied-encryption) that protects this resource.\n"
                },
                "diskEncryptionServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used\n"
                },
                "forceAttach": {
                    "type": "boolean",
                    "description": "Whether to force attach the regional disk even if it's currently attached to another instance. If you try to force attach a zonal disk to an instance, you will receive an error. Setting this parameter cause VM recreation.\n"
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features to enable on the guest operating system. Applicable only for bootable images.\n"
                },
                "initializeParams": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceBootDiskInitializeParam:getInstanceBootDiskInitializeParam"
                    },
                    "description": "Parameters with which a disk was created alongside the instance.\nStructure is documented below.\n"
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface used for attaching this disk. One of `SCSI` or `NVME`.\n"
                },
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRaw \" pulumi-lang-dotnet=\" DiskEncryptionKeyRaw \" pulumi-lang-go=\" diskEncryptionKeyRaw \" pulumi-lang-python=\" disk_encryption_key_raw \" pulumi-lang-yaml=\" diskEncryptionKeyRaw \" pulumi-lang-java=\" diskEncryptionKeyRaw \" pulumi-lang-hcl=\" disk_encryption_key_raw \"\u003e diskEncryptionKeyRaw \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" diskEncryptionKeyRsa \" pulumi-lang-dotnet=\" DiskEncryptionKeyRsa \" pulumi-lang-go=\" diskEncryptionKeyRsa \" pulumi-lang-python=\" disk_encryption_key_rsa \" pulumi-lang-yaml=\" diskEncryptionKeyRsa \" pulumi-lang-java=\" diskEncryptionKeyRsa \" pulumi-lang-hcl=\" disk_encryption_key_rsa \"\u003e diskEncryptionKeyRsa \u003c/span\u003emay be set.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Read/write mode for the disk. One of `\"READ_ONLY\"` or `\"READ_WRITE\"`.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the disk attached to this instance.\n"
                }
            },
            "type": "object",
            "required": [
                "autoDelete",
                "deviceName",
                "diskEncryptionKeyRaw",
                "diskEncryptionKeyRsa",
                "diskEncryptionKeySha256",
                "diskEncryptionServiceAccount",
                "forceAttach",
                "guestOsFeatures",
                "initializeParams",
                "interface",
                "kmsKeySelfLink",
                "mode",
                "source"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceBootDiskInitializeParam:getInstanceBootDiskInitializeParam": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": "The architecture of the disk. One of \"X86_64\" or \"ARM64\".\n"
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "A flag to enable confidential compute mode on boot disk\n"
                },
                "image": {
                    "type": "string",
                    "description": "The image from which this disk was initialised.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A set of key/value label pairs assigned to the disk.\n"
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle.\n"
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Indicates how much throughput to provision for the disk. This sets the number of throughput mb per second that the disk can handle.\n"
                },
                "replicaZones": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of short names or\u003cspan pulumi-lang-nodejs=\" selfLinks \" pulumi-lang-dotnet=\" SelfLinks \" pulumi-lang-go=\" selfLinks \" pulumi-lang-python=\" self_links \" pulumi-lang-yaml=\" selfLinks \" pulumi-lang-java=\" selfLinks \" pulumi-lang-hcl=\" self_links \"\u003e selfLinks \u003c/span\u003eof zones in which to create a regional disk.\n"
                },
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty.\n"
                },
                "resourcePolicies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of\u003cspan pulumi-lang-nodejs=\" selfLinks \" pulumi-lang-dotnet=\" SelfLinks \" pulumi-lang-go=\" selfLinks \" pulumi-lang-python=\" self_links \" pulumi-lang-yaml=\" selfLinks \" pulumi-lang-java=\" selfLinks \" pulumi-lang-hcl=\" self_links \"\u003e selfLinks \u003c/span\u003eto resource policies attached to the selected \u003cspan pulumi-lang-nodejs=\"`bootDisk`\" pulumi-lang-dotnet=\"`BootDisk`\" pulumi-lang-go=\"`bootDisk`\" pulumi-lang-python=\"`boot_disk`\" pulumi-lang-yaml=\"`bootDisk`\" pulumi-lang-java=\"`bootDisk`\" pulumi-lang-hcl=\"`boot_disk`\"\u003e`bootDisk`\u003c/span\u003e\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes.\n"
                },
                "snapshot": {
                    "type": "string",
                    "description": "The snapshot from which this disk was initialised.\n"
                },
                "sourceImageEncryptionKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceBootDiskInitializeParamSourceImageEncryptionKey:getInstanceBootDiskInitializeParamSourceImageEncryptionKey"
                    },
                    "description": "The encryption key used to decrypt the source image.\n"
                },
                "sourceSnapshotEncryptionKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceBootDiskInitializeParamSourceSnapshotEncryptionKey:getInstanceBootDiskInitializeParamSourceSnapshotEncryptionKey"
                    },
                    "description": "The encryption key used to decrypt the source snapshot.\n"
                },
                "storagePool": {
                    "type": "string",
                    "description": "The URL of the storage pool in which the new disk is created\n"
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource exposed to this instance. E.g. `nvidia-tesla-k80`.\n"
                }
            },
            "type": "object",
            "required": [
                "architecture",
                "enableConfidentialCompute",
                "image",
                "labels",
                "provisionedIops",
                "provisionedThroughput",
                "replicaZones",
                "resourceManagerTags",
                "resourcePolicies",
                "size",
                "snapshot",
                "sourceImageEncryptionKeys",
                "sourceSnapshotEncryptionKeys",
                "storagePool",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceBootDiskInitializeParamSourceImageEncryptionKey:getInstanceBootDiskInitializeParamSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the encryption key used to encrypt this disk.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceBootDiskInitializeParamSourceSnapshotEncryptionKey:getInstanceBootDiskInitializeParamSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the encryption key used to encrypt this disk.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceConfidentialInstanceConfig:getInstanceConfidentialInstanceConfig": {
            "properties": {
                "confidentialInstanceType": {
                    "type": "string",
                    "description": "The confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP,\u003cspan pulumi-lang-nodejs=\" minCpuPlatform \" pulumi-lang-dotnet=\" MinCpuPlatform \" pulumi-lang-go=\" minCpuPlatform \" pulumi-lang-python=\" min_cpu_platform \" pulumi-lang-yaml=\" minCpuPlatform \" pulumi-lang-java=\" minCpuPlatform \" pulumi-lang-hcl=\" min_cpu_platform \"\u003e minCpuPlatform \u003c/span\u003e=\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required.\n"
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have confidential compute enabled. Field will be deprecated in a future release\n"
                }
            },
            "type": "object",
            "required": [
                "confidentialInstanceType",
                "enableConfidentialCompute"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerAllInstancesConfig:getInstanceGroupManagerAllInstancesConfig": {
            "properties": {
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The label key-value pairs that you want to patch onto the instance,\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The metadata key-value pairs that you want to patch onto the instance. For more information, see Project and instance metadata,\n"
                }
            },
            "type": "object",
            "required": [
                "labels",
                "metadata"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerAutoHealingPolicy:getInstanceGroupManagerAutoHealingPolicy": {
            "properties": {
                "healthCheck": {
                    "type": "string",
                    "description": "The health check resource that signals autohealing.\n"
                },
                "initialDelaySec": {
                    "type": "integer",
                    "description": "The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. Between 0 and 3600.\n"
                }
            },
            "type": "object",
            "required": [
                "healthCheck",
                "initialDelaySec"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerInstanceLifecyclePolicy:getInstanceGroupManagerInstanceLifecyclePolicy": {
            "properties": {
                "defaultActionOnFailure": {
                    "type": "string",
                    "description": "Specifies the action that a MIG performs on a failed VM. If the value of the \u003cspan pulumi-lang-nodejs=\"\"onFailedHealthCheck\"\" pulumi-lang-dotnet=\"\"OnFailedHealthCheck\"\" pulumi-lang-go=\"\"onFailedHealthCheck\"\" pulumi-lang-python=\"\"on_failed_health_check\"\" pulumi-lang-yaml=\"\"onFailedHealthCheck\"\" pulumi-lang-java=\"\"onFailedHealthCheck\"\" pulumi-lang-hcl=\"\"on_failed_health_check\"\"\u003e\"onFailedHealthCheck\"\u003c/span\u003e field is DEFAULT_ACTION, then the same action also applies to the VMs on which your application fails a health check. Valid values are: REPAIR, DO_NOTHING. If REPAIR (default), then MIG automatically repairs a failed VM by recreating it. For more information, see about repairing VMs in a MIG. If DO_NOTHING, then MIG does not repair a failed VM.\n"
                },
                "forceUpdateOnRepair": {
                    "type": "string",
                    "description": "Specifies whether to apply the group's latest configuration when repairing a VM. Valid options are: YES, NO. If YES and you updated the group's instance template or per-instance configurations after the VM was created, then these changes are applied when VM is repaired. If NO (default), then updates are applied in accordance with the group's update policy type.\n"
                },
                "onFailedHealthCheck": {
                    "type": "string",
                    "description": "Specifies the action that a MIG performs on an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid values are: DEFAULT_ACTION, DO_NOTHING, REPAIR. If DEFAULT_ACTION (default), then MIG uses the same action configured for the  \u003cspan pulumi-lang-nodejs=\"\"defaultActionOnFailure\"\" pulumi-lang-dotnet=\"\"DefaultActionOnFailure\"\" pulumi-lang-go=\"\"defaultActionOnFailure\"\" pulumi-lang-python=\"\"default_action_on_failure\"\" pulumi-lang-yaml=\"\"defaultActionOnFailure\"\" pulumi-lang-java=\"\"defaultActionOnFailure\"\" pulumi-lang-hcl=\"\"default_action_on_failure\"\"\u003e\"defaultActionOnFailure\"\u003c/span\u003e field. If DO_NOTHING, then MIG does not repair unhealthy VM. If REPAIR, then MIG automatically repairs an unhealthy VM by recreating it.\n"
                },
                "onRepairs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceGroupManagerInstanceLifecyclePolicyOnRepair:getInstanceGroupManagerInstanceLifecyclePolicyOnRepair"
                    },
                    "description": "Configuration for VM repairs in the MIG.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultActionOnFailure",
                "forceUpdateOnRepair",
                "onFailedHealthCheck",
                "onRepairs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerInstanceLifecyclePolicyOnRepair:getInstanceGroupManagerInstanceLifecyclePolicyOnRepair": {
            "properties": {
                "allowChangingZone": {
                    "type": "string",
                    "description": "Specifies whether the MIG can change a VM's zone during a repair. If \"YES\", MIG can select a different zone for the VM during a repair. Else if \"NO\", MIG cannot change a VM's zone during a repair. The default value of\u003cspan pulumi-lang-nodejs=\" allowChangingZone \" pulumi-lang-dotnet=\" AllowChangingZone \" pulumi-lang-go=\" allowChangingZone \" pulumi-lang-python=\" allow_changing_zone \" pulumi-lang-yaml=\" allowChangingZone \" pulumi-lang-java=\" allowChangingZone \" pulumi-lang-hcl=\" allow_changing_zone \"\u003e allowChangingZone \u003c/span\u003eis \"NO\".\n"
                }
            },
            "type": "object",
            "required": [
                "allowChangingZone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerNamedPort:getInstanceGroupManagerNamedPort": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the instance group. Either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerParam:getInstanceGroupManagerParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerResourcePolicy:getInstanceGroupManagerResourcePolicy": {
            "properties": {
                "workloadPolicy": {
                    "type": "string",
                    "description": "The URL of the workload policy that is specified for this managed instance group. It can be a full or partial URL.\n"
                }
            },
            "type": "object",
            "required": [
                "workloadPolicy"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStandbyPolicy:getInstanceGroupManagerStandbyPolicy": {
            "properties": {
                "initialDelaySec": {
                    "type": "integer",
                    "description": "Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. The default mode is \"MANUAL\".\n"
                }
            },
            "type": "object",
            "required": [
                "initialDelaySec",
                "mode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStatefulDisk:getInstanceGroupManagerStatefulDisk": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": "A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the disk when the VM is deleted, but do not delete the disk. ON_PERMANENT_INSTANCE_DELETION will delete the stateful disk when the VM is permanently deleted from the instance group. The default is NEVER.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "The device name of the disk to be attached.\n"
                }
            },
            "type": "object",
            "required": [
                "deleteRule",
                "deviceName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStatefulExternalIp:getInstanceGroupManagerStatefulExternalIp": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": "A value that prescribes what should happen to an associated static Address resource when a VM instance is permanently deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the IP when the VM is deleted, but do not delete the address resource. ON_PERMANENT_INSTANCE_DELETION will delete the stateful address when the VM is permanently deleted from the instance group. The default is NEVER.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": "The network interface name\n"
                }
            },
            "type": "object",
            "required": [
                "deleteRule",
                "interfaceName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStatefulInternalIp:getInstanceGroupManagerStatefulInternalIp": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": "A value that prescribes what should happen to an associated static Address resource when a VM instance is permanently deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the IP when the VM is deleted, but do not delete the address resource. ON_PERMANENT_INSTANCE_DELETION will delete the stateful address when the VM is permanently deleted from the instance group. The default is NEVER.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": "The network interface name\n"
                }
            },
            "type": "object",
            "required": [
                "deleteRule",
                "interfaceName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStatus:getInstanceGroupManagerStatus": {
            "properties": {
                "allInstancesConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceGroupManagerStatusAllInstancesConfig:getInstanceGroupManagerStatusAllInstancesConfig"
                    },
                    "description": "Status of all-instances configuration on the group.\n"
                },
                "isStable": {
                    "type": "boolean",
                    "description": "A bit indicating whether the managed instance group is in a stable state. A stable state means that: none of the instances in the managed instance group is currently undergoing any type of change (for example, creation, restart, or deletion); no future changes are scheduled for instances in the managed instance group; and the managed instance group itself is not being modified.\n"
                },
                "statefuls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceGroupManagerStatusStateful:getInstanceGroupManagerStatusStateful"
                    },
                    "description": "Stateful status of the given Instance Group Manager.\n"
                },
                "versionTargets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceGroupManagerStatusVersionTarget:getInstanceGroupManagerStatusVersionTarget"
                    },
                    "description": "A status of consistency of Instances' versions with their target version specified by version field on Instance Group Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "allInstancesConfigs",
                "isStable",
                "statefuls",
                "versionTargets"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStatusAllInstancesConfig:getInstanceGroupManagerStatusAllInstancesConfig": {
            "properties": {
                "currentRevision": {
                    "type": "string",
                    "description": "Current all-instances configuration revision. This value is in RFC3339 text format.\n"
                },
                "effective": {
                    "type": "boolean",
                    "description": "A bit indicating whether this configuration has been applied to all managed instances in the group.\n"
                }
            },
            "type": "object",
            "required": [
                "currentRevision",
                "effective"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStatusStateful:getInstanceGroupManagerStatusStateful": {
            "properties": {
                "hasStatefulConfig": {
                    "type": "boolean",
                    "description": "A bit indicating whether the managed instance group has stateful configuration, that is, if you have configured any items in a stateful policy or in per-instance configs. The group might report that it has no stateful config even when there is still some preserved state on a managed instance, for example, if you have deleted all PICs but not yet applied those deletions.\n"
                },
                "perInstanceConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceGroupManagerStatusStatefulPerInstanceConfig:getInstanceGroupManagerStatusStatefulPerInstanceConfig"
                    },
                    "description": "Status of per-instance configs on the instances.\n"
                }
            },
            "type": "object",
            "required": [
                "hasStatefulConfig",
                "perInstanceConfigs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStatusStatefulPerInstanceConfig:getInstanceGroupManagerStatusStatefulPerInstanceConfig": {
            "properties": {
                "allEffective": {
                    "type": "boolean",
                    "description": "A bit indicating if all of the group's per-instance configs (listed in the output of a listPerInstanceConfigs API call) have status EFFECTIVE or there are no per-instance-configs.\n"
                }
            },
            "type": "object",
            "required": [
                "allEffective"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerStatusVersionTarget:getInstanceGroupManagerStatusVersionTarget": {
            "properties": {
                "isReached": {
                    "type": "boolean",
                    "description": "A bit indicating whether version target has been reached in this managed instance group, i.e. all instances are in their target version. Instances' target version are specified by version field on Instance Group Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "isReached"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerTargetSizePolicy:getInstanceGroupManagerTargetSizePolicy": {
            "properties": {
                "mode": {
                    "type": "string",
                    "description": "The mode of target size policy based on which the MIG creates its VMs individually or all at once.\n"
                }
            },
            "type": "object",
            "required": [
                "mode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerUpdatePolicy:getInstanceGroupManagerUpdatePolicy": {
            "properties": {
                "maxSurgeFixed": {
                    "type": "integer",
                    "description": "Specifies a fixed number of VM instances. This must be a positive integer. Conflicts with max_surge_percent. Both cannot be 0\n"
                },
                "maxSurgePercent": {
                    "type": "integer",
                    "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%. Conflicts with max_surge_fixed.\n"
                },
                "maxUnavailableFixed": {
                    "type": "integer",
                    "description": "Specifies a fixed number of VM instances. This must be a positive integer.\n"
                },
                "maxUnavailablePercent": {
                    "type": "integer",
                    "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%.\n"
                },
                "minReadySec": {
                    "type": "integer",
                    "description": "Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].\n"
                },
                "minimalAction": {
                    "type": "string",
                    "description": "Minimal action to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to update without stopping instances, RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a REFRESH, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.\n"
                },
                "mostDisruptiveAllowedAction": {
                    "type": "string",
                    "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to allow actions that do not need instance restart, RESTART to allow actions that can be applied without instance replacing or REPLACE to allow all possible actions. If the Updater determines that the minimal update action needed is more disruptive than most disruptive allowed action you specify it will not perform the update at all.\n"
                },
                "replacementMethod": {
                    "type": "string",
                    "description": "The instance replacement method for managed instance groups. Valid values are: \"RECREATE\", \"SUBSTITUTE\". If SUBSTITUTE (default), the group replaces VM instances with new instances that have randomly generated names. If RECREATE, instance names are preserved.  You must also set\u003cspan pulumi-lang-nodejs=\" maxUnavailableFixed \" pulumi-lang-dotnet=\" MaxUnavailableFixed \" pulumi-lang-go=\" maxUnavailableFixed \" pulumi-lang-python=\" max_unavailable_fixed \" pulumi-lang-yaml=\" maxUnavailableFixed \" pulumi-lang-java=\" maxUnavailableFixed \" pulumi-lang-hcl=\" max_unavailable_fixed \"\u003e maxUnavailableFixed \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" maxUnavailablePercent \" pulumi-lang-dotnet=\" MaxUnavailablePercent \" pulumi-lang-go=\" maxUnavailablePercent \" pulumi-lang-python=\" max_unavailable_percent \" pulumi-lang-yaml=\" maxUnavailablePercent \" pulumi-lang-java=\" maxUnavailablePercent \" pulumi-lang-hcl=\" max_unavailable_percent \"\u003e maxUnavailablePercent \u003c/span\u003eto be greater than 0.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of update process. You can specify either PROACTIVE so that the instance group manager proactively executes actions in order to bring instances to their target versions or OPPORTUNISTIC so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).\n"
                }
            },
            "type": "object",
            "required": [
                "maxSurgeFixed",
                "maxSurgePercent",
                "maxUnavailableFixed",
                "maxUnavailablePercent",
                "minReadySec",
                "minimalAction",
                "mostDisruptiveAllowedAction",
                "replacementMethod",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerVersion:getInstanceGroupManagerVersion": {
            "properties": {
                "instanceTemplate": {
                    "type": "string",
                    "description": "The full URL to an instance template from which all new instances of this version will be created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance group. Either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "targetSizes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceGroupManagerVersionTargetSize:getInstanceGroupManagerVersionTargetSize"
                    },
                    "description": "The number of instances calculated as a fixed number or a percentage depending on the settings.\n"
                }
            },
            "type": "object",
            "required": [
                "instanceTemplate",
                "name",
                "targetSizes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupManagerVersionTargetSize:getInstanceGroupManagerVersionTargetSize": {
            "properties": {
                "fixed": {
                    "type": "integer",
                    "description": "The number of instances which are managed for this version. Conflicts with percent.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "The number of instances (calculated as percentage) which are managed for this version. Conflicts with fixed. Note that when using percent, rounding will be in favor of explicitly set\u003cspan pulumi-lang-nodejs=\" targetSize \" pulumi-lang-dotnet=\" TargetSize \" pulumi-lang-go=\" targetSize \" pulumi-lang-python=\" target_size \" pulumi-lang-yaml=\" targetSize \" pulumi-lang-java=\" targetSize \" pulumi-lang-hcl=\" target_size \"\u003e targetSize \u003c/span\u003evalues; a managed instance group with 2 instances and 2 versions, one of which has a target_size.percent of 60 will create 2 instances of that version.\n"
                }
            },
            "type": "object",
            "required": [
                "fixed",
                "percent"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGroupNamedPort:getInstanceGroupNamedPort": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the instance group. Either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "port": {
                    "type": "integer"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGuestAccelerator:getInstanceGuestAccelerator": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource exposed to this instance. E.g. `nvidia-tesla-k80`.\n"
                }
            },
            "type": "object",
            "required": [
                "count",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceGuestAttributesQueryValue:getInstanceGuestAttributesQueryValue": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Key of the guest_attribute.\n"
                },
                "namespace": {
                    "type": "string",
                    "description": "Namespace of the guest_attribute.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Value of the guest_attribute.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "namespace",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceInstanceEncryptionKey:getInstanceInstanceEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS.\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The SHA256 hash of the customer's encryption key.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceNetworkInterface:getInstanceNetworkInterface": {
            "properties": {
                "accessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceNetworkInterfaceAccessConfig:getInstanceNetworkInterfaceAccessConfig"
                    },
                    "description": "Access configurations, i.e. IPs via which this\ninstance can be accessed via the Internet. Structure documented below.\n"
                },
                "aliasIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceNetworkInterfaceAliasIpRange:getInstanceNetworkInterfaceAliasIpRange"
                    },
                    "description": "An array of alias IP ranges for this network interface. Structure documented below.\n"
                },
                "aliasIpv6Ranges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceNetworkInterfaceAliasIpv6Range:getInstanceNetworkInterfaceAliasIpv6Range"
                    },
                    "description": "An array of IPv6 alias IP ranges for this network interface.\n"
                },
                "igmpQuery": {
                    "type": "string",
                    "description": "Indicates whether igmp query is enabled on the network interface or not. If enabled, also indicates the version of IGMP supported.\n"
                },
                "internalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "The prefix length of the primary internal IPv6 range.\n"
                },
                "ipv6AccessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceNetworkInterfaceIpv6AccessConfig:getInstanceNetworkInterfaceIpv6AccessConfig"
                    },
                    "description": "An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access.\n"
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.\n"
                },
                "macAddress": {
                    "type": "string",
                    "description": "MAC address assigned to this network interface.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance. One of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the network attached to this interface.\n"
                },
                "networkAttachment": {
                    "type": "string",
                    "description": "The URL of the network attachment to this interface.\n"
                },
                "networkIp": {
                    "type": "string",
                    "description": "The internal ip address of the instance, either manually or dynamically assigned.\n"
                },
                "nicType": {
                    "type": "string",
                    "description": "The type of vNIC to be used on this interface. Possible values:GVNIC, VIRTIO_NET, IDPF, MRDMA, IRDMA and IDPF\n"
                },
                "parentNicName": {
                    "type": "string",
                    "description": "Name of the parent network interface of a dynamic network interface.\n"
                },
                "queueCount": {
                    "type": "integer",
                    "description": "The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                },
                "stackType": {
                    "type": "string",
                    "description": "The stack type for this network interface to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the subnetwork attached to this interface.\n"
                },
                "subnetworkProject": {
                    "type": "string",
                    "description": "The project in which the subnetwork belongs.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "VLAN tag of a dynamic network interface, must be an integer in the range from 2 to 255 inclusively.\n"
                }
            },
            "type": "object",
            "required": [
                "accessConfigs",
                "aliasIpRanges",
                "aliasIpv6Ranges",
                "igmpQuery",
                "internalIpv6PrefixLength",
                "ipv6AccessConfigs",
                "ipv6AccessType",
                "ipv6Address",
                "macAddress",
                "name",
                "network",
                "networkAttachment",
                "networkIp",
                "nicType",
                "parentNicName",
                "queueCount",
                "securityPolicy",
                "stackType",
                "subnetwork",
                "subnetworkProject",
                "vlan"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceNetworkInterfaceAccessConfig:getInstanceNetworkInterfaceAccessConfig": {
            "properties": {
                "natIp": {
                    "type": "string",
                    "description": "If the instance has an access config, either the given external ip (in the \u003cspan pulumi-lang-nodejs=\"`natIp`\" pulumi-lang-dotnet=\"`NatIp`\" pulumi-lang-go=\"`natIp`\" pulumi-lang-python=\"`nat_ip`\" pulumi-lang-yaml=\"`natIp`\" pulumi-lang-java=\"`natIp`\" pulumi-lang-hcl=\"`nat_ip`\"\u003e`natIp`\u003c/span\u003e field) or the ephemeral (generated) ip (if you didn't provide one).\n"
                },
                "networkTier": {
                    "type": "string",
                    "description": "The [networking tier][network-tier] used for configuring this instance. One of `PREMIUM` or `STANDARD`.\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The DNS domain name for the public PTR record.\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                }
            },
            "type": "object",
            "required": [
                "natIp",
                "networkTier",
                "publicPtrDomainName",
                "securityPolicy"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceNetworkInterfaceAliasIpRange:getInstanceNetworkInterfaceAliasIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying\nthe secondary range from which to allocate the IP CIDR range for this alias IP\nrange.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange",
                "subnetworkRangeName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceNetworkInterfaceAliasIpv6Range:getInstanceNetworkInterfaceAliasIpv6Range": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying\nthe secondary range from which to allocate the IP CIDR range for this alias IP\nrange.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange",
                "subnetworkRangeName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceNetworkInterfaceIpv6AccessConfig:getInstanceNetworkInterfaceIpv6AccessConfig": {
            "properties": {
                "externalIpv6": {
                    "type": "string",
                    "description": "The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. To use a static external IP address, it must be unused and in the same region as the instance's zone. If not specified, Google Cloud will automatically assign an external IPv6 address from the instance's subnetwork.\n"
                },
                "externalIpv6PrefixLength": {
                    "type": "string",
                    "description": "The prefix length of the external IPv6 range.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance. One of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "networkTier": {
                    "type": "string",
                    "description": "The [networking tier][network-tier] used for configuring this instance. One of `PREMIUM` or `STANDARD`.\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The DNS domain name for the public PTR record.\n"
                },
                "securityPolicy": {
                    "type": "string",
                    "description": "A full or partial URL to a security policy to add to this instance. If this field is set to an empty string it will remove the associated security policy.\n"
                }
            },
            "type": "object",
            "required": [
                "externalIpv6",
                "externalIpv6PrefixLength",
                "name",
                "networkTier",
                "publicPtrDomainName",
                "securityPolicy"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceNetworkPerformanceConfig:getInstanceNetworkPerformanceConfig": {
            "properties": {
                "totalEgressBandwidthTier": {
                    "type": "string",
                    "description": "The egress bandwidth tier for the instance.\n"
                }
            },
            "type": "object",
            "required": [
                "totalEgressBandwidthTier"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceParam:getInstanceParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceReservationAffinity:getInstanceReservationAffinity": {
            "properties": {
                "specificReservations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceReservationAffinitySpecificReservation:getInstanceReservationAffinitySpecificReservation"
                    },
                    "description": "Specifies the label selector for the reservation to use.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource exposed to this instance. E.g. `nvidia-tesla-k80`.\n"
                }
            },
            "type": "object",
            "required": [
                "specificReservations",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceReservationAffinitySpecificReservation:getInstanceReservationAffinitySpecificReservation": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, specify compute.googleapis.com/reservation-name as the key and specify the name of your reservation as the only value.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceScheduling:getInstanceScheduling": {
            "properties": {
                "automaticRestart": {
                    "type": "boolean",
                    "description": "Specifies if the instance should be\nrestarted if it was terminated by Compute Engine (not a user).\n"
                },
                "availabilityDomain": {
                    "type": "integer",
                    "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
                },
                "gracefulShutdowns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceSchedulingGracefulShutdown:getInstanceSchedulingGracefulShutdown"
                    },
                    "description": "Settings for the instance to perform a graceful shutdown.\n"
                },
                "hostErrorTimeoutSeconds": {
                    "type": "integer",
                    "description": "Beta Time in seconds for host error detection.\n"
                },
                "instanceTerminationAction": {
                    "type": "string",
                    "description": "Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`.  Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot)\n"
                },
                "localSsdRecoveryTimeouts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceSchedulingLocalSsdRecoveryTimeout:getInstanceSchedulingLocalSsdRecoveryTimeout"
                    },
                    "description": "Specifies the maximum amount of time a Local Ssd Vm should wait while\n  recovery of the Local Ssd state is attempted. Its value should be in\n  between 0 and 168 hours with hour granularity and the default value being 1\n  hour.\n"
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC\n"
                },
                "maxRunDurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceSchedulingMaxRunDuration:getInstanceSchedulingMaxRunDuration"
                    },
                    "description": "The timeout for new network connections to hosts.\n"
                },
                "minNodeCpus": {
                    "type": "integer"
                },
                "nodeAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceSchedulingNodeAffinity:getInstanceSchedulingNodeAffinity"
                    },
                    "description": "Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems.\n"
                },
                "onHostMaintenance": {
                    "type": "string",
                    "description": "Describes maintenance behavior for the\ninstance. One of `MIGRATE` or `TERMINATE`, for more info, read\n[here](https://cloud.google.com/compute/docs/instances/setting-instance-scheduling-options)\n"
                },
                "onInstanceStopActions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceSchedulingOnInstanceStopAction:getInstanceSchedulingOnInstanceStopAction"
                    },
                    "description": "Defines the behaviour for instances with the instance_termination_action.\n"
                },
                "preemptible": {
                    "type": "boolean",
                    "description": "Whether the instance is preemptible.\n"
                },
                "preemptionNoticeDurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceSchedulingPreemptionNoticeDuration:getInstanceSchedulingPreemptionNoticeDuration"
                    },
                    "description": "The duration of the notice that the instance will receive before it is preempted.\n"
                },
                "provisioningModel": {
                    "type": "string",
                    "description": "Describe the type of preemptible VM.\n"
                },
                "skipGuestOsShutdown": {
                    "type": "boolean",
                    "description": "Default is false and there will be 120 seconds between GCE ACPI G2 Soft Off and ACPI G3 Mechanical Off for Standard VMs and 30 seconds for Spot VMs.\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Specifies the timestamp, when the instance will be terminated,\nin RFC3339 text format. If specified, the instance termination action\nwill be performed at the termination time.\n"
                }
            },
            "type": "object",
            "required": [
                "automaticRestart",
                "availabilityDomain",
                "gracefulShutdowns",
                "hostErrorTimeoutSeconds",
                "instanceTerminationAction",
                "localSsdRecoveryTimeouts",
                "maintenanceInterval",
                "maxRunDurations",
                "minNodeCpus",
                "nodeAffinities",
                "onHostMaintenance",
                "onInstanceStopActions",
                "preemptible",
                "preemptionNoticeDurations",
                "provisioningModel",
                "skipGuestOsShutdown",
                "terminationTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceSchedulingGracefulShutdown:getInstanceSchedulingGracefulShutdown": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Opts-in for graceful shutdown.\n"
                },
                "maxDurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceSchedulingGracefulShutdownMaxDuration:getInstanceSchedulingGracefulShutdownMaxDuration"
                    },
                    "description": "The time allotted for the instance to gracefully shut down.\n\t\t\t\t\t\t\t\t\t\tIf the graceful shutdown isn't complete after this time, then the instance\n\t\t\t\t\t\t\t\t\t\ttransitions to the STOPPING state.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "maxDurations"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceSchedulingGracefulShutdownMaxDuration:getInstanceSchedulingGracefulShutdownMaxDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolution. Durations less than one second are represented\n\t\t\t\t\t\t\t\t\t\t\t\t\twith a 0 seconds field and a positive nanos field. Must\n\t\t\t\t\t\t\t\t\t\t\t\t\tbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\n\t\t\t\t\t\t\t\t\t\t\t\t\tThe value must be between 1 and 3600, which is 3,600 seconds (one hour).\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceSchedulingLocalSsdRecoveryTimeout:getInstanceSchedulingLocalSsdRecoveryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceSchedulingMaxRunDuration:getInstanceSchedulingMaxRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceSchedulingNodeAffinity:getInstanceSchedulingNodeAffinity": {
            "properties": {
                "key": {
                    "type": "string"
                },
                "operator": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "operator",
                "values"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceSchedulingOnInstanceStopAction:getInstanceSchedulingOnInstanceStopAction": {
            "properties": {
                "discardLocalSsd": {
                    "type": "boolean",
                    "description": "If true, the contents of any attached Local SSD disks will be discarded.\n"
                }
            },
            "type": "object",
            "required": [
                "discardLocalSsd"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceSchedulingPreemptionNoticeDuration:getInstanceSchedulingPreemptionNoticeDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceScratchDisk:getInstanceScratchDisk": {
            "properties": {
                "deviceName": {
                    "type": "string",
                    "description": "Name with which the attached disk is accessible\nunder `/dev/disk/by-id/`\n"
                },
                "interface": {
                    "type": "string",
                    "description": "The disk interface used for attaching this disk. One of `SCSI` or `NVME`.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes.\n"
                }
            },
            "type": "object",
            "required": [
                "deviceName",
                "interface",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceServiceAccount:getInstanceServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "The service account e-mail address.\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service scopes.\n"
                }
            },
            "type": "object",
            "required": [
                "email",
                "scopes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceShieldedInstanceConfig:getInstanceShieldedInstanceConfig": {
            "properties": {
                "enableIntegrityMonitoring": {
                    "type": "boolean",
                    "description": "- Whether integrity monitoring is enabled for the instance.\n"
                },
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "- Whether secure boot is enabled for the instance.\n"
                },
                "enableVtpm": {
                    "type": "boolean",
                    "description": "- Whether the instance uses vTPM.\n"
                }
            },
            "type": "object",
            "required": [
                "enableIntegrityMonitoring",
                "enableSecureBoot",
                "enableVtpm"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateAdvancedMachineFeature:getInstanceTemplateAdvancedMachineFeature": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Whether to enable nested virtualization or not.\n"
                },
                "enableUefiNetworking": {
                    "type": "boolean",
                    "description": "Whether to enable UEFI networking or not.\n"
                },
                "performanceMonitoringUnit": {
                    "type": "string",
                    "description": "The PMU is a hardware component within the CPU core that monitors how the processor runs code. Valid values for the level of PMU are \"STANDARD\", \"ENHANCED\", and \"ARCHITECTURAL\".\n"
                },
                "threadsPerCore": {
                    "type": "integer",
                    "description": "The number of threads per physical core. To disable simultaneous multithreading (SMT) set this to 1. If unset, the maximum number of threads supported per core by the underlying processor is assumed.\n"
                },
                "turboMode": {
                    "type": "string",
                    "description": "Turbo frequency mode to use for the instance. Currently supported modes is \"ALL_CORE_MAX\".\n"
                },
                "visibleCoreCount": {
                    "type": "integer",
                    "description": "The number of physical cores to expose to an instance. Multiply by the number of threads per core to compute the total number of virtual CPUs to expose to the instance. If unset, the number of cores is inferred from the instance\\'s nominal CPU count and the underlying platform\\'s SMT width.\n"
                }
            },
            "type": "object",
            "required": [
                "enableNestedVirtualization",
                "enableUefiNetworking",
                "performanceMonitoringUnit",
                "threadsPerCore",
                "turboMode",
                "visibleCoreCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateConfidentialInstanceConfig:getInstanceTemplateConfidentialInstanceConfig": {
            "properties": {
                "confidentialInstanceType": {
                    "type": "string",
                    "description": "The confidential computing technology the instance uses.\n\t\t\t\t\t\t\t\tSEV is an AMD feature. TDX is an Intel feature. One of the following\n\t\t\t\t\t\t\t\tvalues is required: SEV, SEV_SNP, TDX. If SEV_SNP,\u003cspan pulumi-lang-nodejs=\" minCpuPlatform \" pulumi-lang-dotnet=\" MinCpuPlatform \" pulumi-lang-go=\" minCpuPlatform \" pulumi-lang-python=\" min_cpu_platform \" pulumi-lang-yaml=\" minCpuPlatform \" pulumi-lang-java=\" minCpuPlatform \" pulumi-lang-hcl=\" min_cpu_platform \"\u003e minCpuPlatform \u003c/span\u003e=\n\t\t\t\t\t\t\t\t\"AMD Milan\" is currently required.\n"
                },
                "enableConfidentialCompute": {
                    "type": "boolean",
                    "description": "Defines whether the instance should have confidential compute enabled. \u003cspan pulumi-lang-nodejs=\"`onHostMaintenance`\" pulumi-lang-dotnet=\"`OnHostMaintenance`\" pulumi-lang-go=\"`onHostMaintenance`\" pulumi-lang-python=\"`on_host_maintenance`\" pulumi-lang-yaml=\"`onHostMaintenance`\" pulumi-lang-java=\"`onHostMaintenance`\" pulumi-lang-hcl=\"`on_host_maintenance`\"\u003e`onHostMaintenance`\u003c/span\u003e has to be set to TERMINATE or this will fail to create the VM.\n"
                }
            },
            "type": "object",
            "required": [
                "confidentialInstanceType",
                "enableConfidentialCompute"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateDisk:getInstanceTemplateDisk": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": "The architecture of the image. Allowed values are ARM64 or X86_64.\n"
                },
                "autoDelete": {
                    "type": "boolean",
                    "description": "Whether or not the disk should be auto-deleted.\nThis defaults to true.\n"
                },
                "boot": {
                    "type": "boolean",
                    "description": "Indicates that this is a boot disk.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "A unique device name that is reflected into the\n/dev/  tree of a Linux operating system running within the instance. If not\nspecified, the server chooses a default device name to apply to this disk.\n"
                },
                "diskEncryptionKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateDiskDiskEncryptionKey:getInstanceTemplateDiskDiskEncryptionKey"
                    },
                    "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n"
                },
                "diskName": {
                    "type": "string",
                    "description": "Name of the disk. When not provided, this defaults\nto the name of the instance.\n"
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes. If not\nspecified, it will inherit the size of its base image. For SCRATCH disks,\nthe size must be exactly 375GB.\n"
                },
                "diskType": {
                    "type": "string",
                    "description": "The GCE disk type. Such as `\"pd-ssd\"`, `\"local-ssd\"`,\n`\"pd-balanced\"` or `\"pd-standard\"`.\n"
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features to enable on the guest operating system. Applicable only for bootable images.\n"
                },
                "interface": {
                    "type": "string",
                    "description": "Specifies the disk interface to use for attaching this disk,\nwhich is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI\nand the request will fail if you attempt to attach a persistent disk in any other format\nthan SCSI. Local SSDs can use either NVME or SCSI.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "(Optional) A set of ket/value label pairs to assign to disk created from\nthis template\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The mode in which to attach this disk, either READ_WRITE\nor READ_ONLY. If you are attaching or creating a boot disk, this must\nread-write mode.\n"
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Indicates how many IOPS to provision for the disk. This\nsets the number of I/O operations per second that the disk can handle.\nValues must be between 10,000 and 120,000. For more details, see the\n[Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk).\n"
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).\n"
                },
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty.\n"
                },
                "resourcePolicies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "(Optional) -- A list of short names of resource policies to attach to this disk for automatic snapshot creations. Currently a max of 1 resource policy is supported.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The name (**not self_link**)\nof the disk (such as those managed by \u003cspan pulumi-lang-nodejs=\"`gcp.compute.Disk`\" pulumi-lang-dotnet=\"`gcp.compute.Disk`\" pulumi-lang-go=\"`compute.Disk`\" pulumi-lang-python=\"`compute.Disk`\" pulumi-lang-yaml=\"`gcp.compute.Disk`\" pulumi-lang-java=\"`gcp.compute.Disk`\" pulumi-lang-hcl=\"`google_compute_disk`\"\u003e`gcp.compute.Disk`\u003c/span\u003e) to attach.\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sourceImage`\" pulumi-lang-dotnet=\"`SourceImage`\" pulumi-lang-go=\"`sourceImage`\" pulumi-lang-python=\"`source_image`\" pulumi-lang-yaml=\"`sourceImage`\" pulumi-lang-java=\"`sourceImage`\" pulumi-lang-hcl=\"`source_image`\"\u003e`sourceImage`\u003c/span\u003e is **required** in a disk block unless the disk type is `local-ssd`. Check the API [docs](https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates/insert) for details.\n"
                },
                "sourceImage": {
                    "type": "string",
                    "description": "The image from which to\ninitialize this disk. This can be one of: the image's \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e,\n`projects/{project}/global/images/{image}`,\n`projects/{project}/global/images/family/{family}`, `global/images/{image}`,\n`global/images/family/{family}`, `family/{family}`, `{project}/{family}`,\n`{project}/{image}`, `{family}`, or `{image}`.\n\u003e **Note:** Either \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\" pulumi-lang-hcl=\"`source`\"\u003e`source`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sourceImage`\" pulumi-lang-dotnet=\"`SourceImage`\" pulumi-lang-go=\"`sourceImage`\" pulumi-lang-python=\"`source_image`\" pulumi-lang-yaml=\"`sourceImage`\" pulumi-lang-java=\"`sourceImage`\" pulumi-lang-hcl=\"`source_image`\"\u003e`sourceImage`\u003c/span\u003e is **required** in a disk block unless the disk type is `local-ssd`. Check the API [docs](https://cloud.google.com/compute/docs/reference/rest/v1/instanceTemplates/insert) for details.\n"
                },
                "sourceImageEncryptionKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateDiskSourceImageEncryptionKey:getInstanceTemplateDiskSourceImageEncryptionKey"
                    },
                    "description": "The customer-supplied encryption key of the source\nimage. Required if the source image is protected by a\ncustomer-supplied encryption key.\n\nInstance templates do not store customer-supplied\nencryption keys, so you cannot create disks for\ninstances in a managed instance group if the source\nimages are encrypted with your own keys.\n"
                },
                "sourceSnapshot": {
                    "type": "string",
                    "description": "The source snapshot to create this disk. When creating\na new instance, one of initializeParams.sourceSnapshot,\ninitializeParams.sourceImage, or disks.source is\nrequired except for local SSD.\n"
                },
                "sourceSnapshotEncryptionKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateDiskSourceSnapshotEncryptionKey:getInstanceTemplateDiskSourceSnapshotEncryptionKey"
                    },
                    "description": "The customer-supplied encryption key of the source snapshot.\n"
                },
                "storagePool": {
                    "type": "string",
                    "description": "The\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eor ID of the Storage Pool to create this disk in.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource to expose to this instance. E.g. `nvidia-tesla-k80`.\n"
                }
            },
            "type": "object",
            "required": [
                "architecture",
                "autoDelete",
                "boot",
                "deviceName",
                "diskEncryptionKeys",
                "diskName",
                "diskSizeGb",
                "diskType",
                "guestOsFeatures",
                "interface",
                "labels",
                "mode",
                "provisionedIops",
                "provisionedThroughput",
                "resourceManagerTags",
                "resourcePolicies",
                "source",
                "sourceImage",
                "sourceImageEncryptionKeys",
                "sourceSnapshot",
                "sourceSnapshotEncryptionKeys",
                "storagePool",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateDiskDiskEncryptionKey:getInstanceTemplateDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateDiskSourceImageEncryptionKey:getInstanceTemplateDiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption\nrequest for the given KMS key. If absent, the Compute\nEngine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateDiskSourceSnapshotEncryptionKey:getInstanceTemplateDiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption\nrequest for the given KMS key. If absent, the Compute\nEngine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateGuestAccelerator:getInstanceTemplateGuestAccelerator": {
            "properties": {
                "count": {
                    "type": "integer",
                    "description": "The number of the guest accelerator cards exposed to this instance.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource to expose to this instance. E.g. `nvidia-tesla-k80`.\n"
                }
            },
            "type": "object",
            "required": [
                "count",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateNetworkInterface:getInstanceTemplateNetworkInterface": {
            "properties": {
                "accessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateNetworkInterfaceAccessConfig:getInstanceTemplateNetworkInterfaceAccessConfig"
                    },
                    "description": "Access configurations, i.e. IPs via which this\ninstance can be accessed via the Internet. Omit to ensure that the instance\nis not accessible from the Internet (this means that ssh provisioners will\nnot work unless you can send traffic to the instance's\nnetwork (e.g. via tunnel or because it is running on another cloud instance\non that network). This block can be repeated multiple times. Structure documented below.\n"
                },
                "aliasIpRanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateNetworkInterfaceAliasIpRange:getInstanceTemplateNetworkInterfaceAliasIpRange"
                    },
                    "description": "An\narray of alias IP ranges for this network interface. Can only be specified for network\ninterfaces on subnet-mode networks. Structure documented below.\n"
                },
                "aliasIpv6Ranges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateNetworkInterfaceAliasIpv6Range:getInstanceTemplateNetworkInterfaceAliasIpv6Range"
                    },
                    "description": "An array of alias IPv6 ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks.\n"
                },
                "igmpQuery": {
                    "type": "string",
                    "description": "Indicates whether igmp query is enabled on the network interface or not. If enabled, also indicates the version of IGMP supported.\n"
                },
                "internalIpv6PrefixLength": {
                    "type": "integer",
                    "description": "The prefix length of the primary internal IPv6 range.\n"
                },
                "ipv6AccessConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateNetworkInterfaceIpv6AccessConfig:getInstanceTemplateNetworkInterfaceIpv6AccessConfig"
                    },
                    "description": "An array of IPv6 access configurations for this interface. Currently, only one IPv6 access config, DIRECT_IPV6, is supported. If there is no ipv6AccessConfig specified, then this instance will have no external IPv6 Internet access.\n"
                },
                "ipv6AccessType": {
                    "type": "string",
                    "description": "One of EXTERNAL, INTERNAL to indicate whether the IP can be accessed from the Internet. This field is always inherited from its subnetwork.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "An IPv6 internal network address for this network interface. If not specified, Google Cloud will automatically assign an internal IPv6 address from the instance's subnetwork.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance template. One of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\" pulumi-lang-hcl=\"`filter`\"\u003e`filter`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLinkUnique`\" pulumi-lang-dotnet=\"`SelfLinkUnique`\" pulumi-lang-go=\"`selfLinkUnique`\" pulumi-lang-python=\"`self_link_unique`\" pulumi-lang-yaml=\"`selfLinkUnique`\" pulumi-lang-java=\"`selfLinkUnique`\" pulumi-lang-hcl=\"`self_link_unique`\"\u003e`selfLinkUnique`\u003c/span\u003e must be provided.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The name or\u003cspan pulumi-lang-nodejs=\" selfLink \" pulumi-lang-dotnet=\" SelfLink \" pulumi-lang-go=\" selfLink \" pulumi-lang-python=\" self_link \" pulumi-lang-yaml=\" selfLink \" pulumi-lang-java=\" selfLink \" pulumi-lang-hcl=\" self_link \"\u003e selfLink \u003c/span\u003eof the network to attach this interface to.\nUse \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\" pulumi-lang-hcl=\"`network`\"\u003e`network`\u003c/span\u003e attribute for Legacy or Auto subnetted networks and\n\u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e for custom subnetted networks.\n"
                },
                "networkAttachment": {
                    "type": "string",
                    "description": "The URL of the network attachment that this interface should connect to in the following format: projects/{projectNumber}/regions/{region_name}/networkAttachments/{network_attachment_name}.\n"
                },
                "networkIp": {
                    "type": "string",
                    "description": "The private IP address to assign to the instance. If\nempty, the address will be automatically assigned.\n"
                },
                "nicType": {
                    "type": "string",
                    "description": "The type of vNIC to be used on this interface. Possible values:GVNIC, VIRTIO_NET, MRDMA, IRDMA and IDPF\n"
                },
                "parentNicName": {
                    "type": "string",
                    "description": "Name of the parent network interface of a dynamic network interface.\n"
                },
                "queueCount": {
                    "type": "integer",
                    "description": "The networking queue count that's specified by users for the network interface. Both Rx and Tx queues will be set to this number. It will be empty if not specified.\n"
                },
                "stackType": {
                    "type": "string",
                    "description": "The stack type for this network interface to identify whether the IPv6 feature is enabled or not. If not specified, IPV4_ONLY will be used.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "the name of the subnetwork to attach this interface\nto. The subnetwork must exist in the same \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\" pulumi-lang-hcl=\"`region`\"\u003e`region`\u003c/span\u003e this instance will be\ncreated in. Either \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\" pulumi-lang-hcl=\"`network`\"\u003e`network`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`subnetwork`\" pulumi-lang-dotnet=\"`Subnetwork`\" pulumi-lang-go=\"`subnetwork`\" pulumi-lang-python=\"`subnetwork`\" pulumi-lang-yaml=\"`subnetwork`\" pulumi-lang-java=\"`subnetwork`\" pulumi-lang-hcl=\"`subnetwork`\"\u003e`subnetwork`\u003c/span\u003e must be provided.\n"
                },
                "subnetworkProject": {
                    "type": "string",
                    "description": "The ID of the project in which the subnetwork belongs.\nIf it is not provided, the provider project is used.\n"
                },
                "vlan": {
                    "type": "integer",
                    "description": "VLAN tag of a dynamic network interface, must be an integer in the range from 2 to 255 inclusively.\n"
                }
            },
            "type": "object",
            "required": [
                "accessConfigs",
                "aliasIpRanges",
                "aliasIpv6Ranges",
                "igmpQuery",
                "internalIpv6PrefixLength",
                "ipv6AccessConfigs",
                "ipv6AccessType",
                "ipv6Address",
                "name",
                "network",
                "networkAttachment",
                "networkIp",
                "nicType",
                "parentNicName",
                "queueCount",
                "stackType",
                "subnetwork",
                "subnetworkProject",
                "vlan"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateNetworkInterfaceAccessConfig:getInstanceTemplateNetworkInterfaceAccessConfig": {
            "properties": {
                "natIp": {
                    "type": "string",
                    "description": "The IP address that will be 1:1 mapped to the instance's\nnetwork ip. If not given, one will be generated.\n"
                },
                "networkTier": {
                    "type": "string",
                    "description": "The [networking tier][network-tier] used for configuring\nthis instance template. This field can take the following values: PREMIUM or\nSTANDARD. If this field is not specified, it is assumed to be PREMIUM.\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.\n"
                }
            },
            "type": "object",
            "required": [
                "natIp",
                "networkTier",
                "publicPtrDomainName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateNetworkInterfaceAliasIpRange:getInstanceTemplateNetworkInterfaceAliasIpRange": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range\nmust belong to the specified subnetwork and cannot contain IP addresses reserved by\nsystem or used by other network interfaces. At the time of writing only a\nnetmask (e.g. /24) may be supplied, with a CIDR format resulting in an API\nerror.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying\nthe secondary range from which to allocate the IP CIDR range for this alias IP\nrange. If left unspecified, the primary range of the subnetwork will be used.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange",
                "subnetworkRangeName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateNetworkInterfaceAliasIpv6Range:getInstanceTemplateNetworkInterfaceAliasIpv6Range": {
            "properties": {
                "ipCidrRange": {
                    "type": "string",
                    "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range\nmust belong to the specified subnetwork and cannot contain IP addresses reserved by\nsystem or used by other network interfaces. At the time of writing only a\nnetmask (e.g. /24) may be supplied, with a CIDR format resulting in an API\nerror.\n"
                },
                "subnetworkRangeName": {
                    "type": "string",
                    "description": "The subnetwork secondary range name specifying\nthe secondary range from which to allocate the IP CIDR range for this alias IP\nrange. If left unspecified, the primary range of the subnetwork will be used.\n"
                }
            },
            "type": "object",
            "required": [
                "ipCidrRange",
                "subnetworkRangeName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateNetworkInterfaceIpv6AccessConfig:getInstanceTemplateNetworkInterfaceIpv6AccessConfig": {
            "properties": {
                "externalIpv6": {
                    "type": "string",
                    "description": "The first IPv6 address of the external IPv6 range associated with this instance, prefix length is stored in externalIpv6PrefixLength in ipv6AccessConfig. The field is output only, an IPv6 address from a subnetwork associated with the instance will be allocated dynamically.\n"
                },
                "externalIpv6PrefixLength": {
                    "type": "string",
                    "description": "The prefix length of the external IPv6 range.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance template. One of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\" pulumi-lang-hcl=\"`filter`\"\u003e`filter`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLinkUnique`\" pulumi-lang-dotnet=\"`SelfLinkUnique`\" pulumi-lang-go=\"`selfLinkUnique`\" pulumi-lang-python=\"`self_link_unique`\" pulumi-lang-yaml=\"`selfLinkUnique`\" pulumi-lang-java=\"`selfLinkUnique`\" pulumi-lang-hcl=\"`self_link_unique`\"\u003e`selfLinkUnique`\u003c/span\u003e must be provided.\n"
                },
                "networkTier": {
                    "type": "string",
                    "description": "The [networking tier][network-tier] used for configuring\nthis instance template. This field can take the following values: PREMIUM or\nSTANDARD. If this field is not specified, it is assumed to be PREMIUM.\n"
                },
                "publicPtrDomainName": {
                    "type": "string",
                    "description": "The domain name to be used when creating DNSv6 records for the external IPv6 ranges.\n"
                }
            },
            "type": "object",
            "required": [
                "externalIpv6",
                "externalIpv6PrefixLength",
                "name",
                "networkTier",
                "publicPtrDomainName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateNetworkPerformanceConfig:getInstanceTemplateNetworkPerformanceConfig": {
            "properties": {
                "totalEgressBandwidthTier": {
                    "type": "string",
                    "description": "The egress bandwidth tier for the instance.\n"
                }
            },
            "type": "object",
            "required": [
                "totalEgressBandwidthTier"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateReservationAffinity:getInstanceTemplateReservationAffinity": {
            "properties": {
                "specificReservations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateReservationAffinitySpecificReservation:getInstanceTemplateReservationAffinitySpecificReservation"
                    },
                    "description": "Specifies the label selector for the reservation to use.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The accelerator type resource to expose to this instance. E.g. `nvidia-tesla-k80`.\n"
                }
            },
            "type": "object",
            "required": [
                "specificReservations",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateReservationAffinitySpecificReservation:getInstanceTemplateReservationAffinitySpecificReservation": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key for the node affinity label.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Corresponds to the label values of a reservation resource.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateScheduling:getInstanceTemplateScheduling": {
            "properties": {
                "automaticRestart": {
                    "type": "boolean",
                    "description": "Specifies whether the instance should be\nautomatically restarted if it is terminated by Compute Engine (not\nterminated by a user). This defaults to true.\n"
                },
                "availabilityDomain": {
                    "type": "integer",
                    "description": "Specifies the availability domain, which this instance should be scheduled on.\n"
                },
                "gracefulShutdowns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateSchedulingGracefulShutdown:getInstanceTemplateSchedulingGracefulShutdown"
                    },
                    "description": "Settings for the instance to perform a graceful shutdown.\n"
                },
                "hostErrorTimeoutSeconds": {
                    "type": "integer",
                    "description": "Beta Time in seconds for host error detection.\n"
                },
                "instanceTerminationAction": {
                    "type": "string",
                    "description": "Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`.  Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot)\n"
                },
                "localSsdRecoveryTimeouts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateSchedulingLocalSsdRecoveryTimeout:getInstanceTemplateSchedulingLocalSsdRecoveryTimeout"
                    },
                    "description": "Specifies the maximum amount of time a Local Ssd Vm should wait while\n  recovery of the Local Ssd state is attempted. Its value should be in\n  between 0 and 168 hours with hour granularity and the default value being 1\n  hour.\n"
                },
                "maintenanceInterval": {
                    "type": "string",
                    "description": "Specifies the frequency of planned maintenance events. The accepted values are: PERIODIC\n"
                },
                "maxRunDurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateSchedulingMaxRunDuration:getInstanceTemplateSchedulingMaxRunDuration"
                    },
                    "description": "The timeout for new network connections to hosts.\n"
                },
                "minNodeCpus": {
                    "type": "integer",
                    "description": "Minimum number of cpus for the instance.\n"
                },
                "nodeAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateSchedulingNodeAffinity:getInstanceTemplateSchedulingNodeAffinity"
                    },
                    "description": "Specifies node affinities or anti-affinities\nto determine which sole-tenant nodes your instances and managed instance\ngroups will use as host systems. Read more on sole-tenant node creation\n[here](https://cloud.google.com/compute/docs/nodes/create-nodes).\nStructure documented below.\n"
                },
                "onHostMaintenance": {
                    "type": "string",
                    "description": "Defines the maintenance behavior for this\ninstance.\n"
                },
                "onInstanceStopActions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateSchedulingOnInstanceStopAction:getInstanceTemplateSchedulingOnInstanceStopAction"
                    },
                    "description": "Defines the behaviour for instances with the instance_termination_action.\n"
                },
                "preemptible": {
                    "type": "boolean",
                    "description": "Allows instance to be preempted. This defaults to\nfalse. Read more on this\n[here](https://cloud.google.com/compute/docs/instances/preemptible).\n"
                },
                "preemptionNoticeDurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateSchedulingPreemptionNoticeDuration:getInstanceTemplateSchedulingPreemptionNoticeDuration"
                    },
                    "description": "The duration of the notice that the instance will receive before it is preempted.\n"
                },
                "provisioningModel": {
                    "type": "string",
                    "description": "Describe the type of preemptible VM.\n"
                },
                "skipGuestOsShutdown": {
                    "type": "boolean",
                    "description": "Default is false and there will be 120 seconds between GCE ACPI G2 Soft Off and ACPI G3 Mechanical Off for Standard VMs and 30 seconds for Spot VMs.\n"
                },
                "terminationTime": {
                    "type": "string",
                    "description": "Specifies the timestamp, when the instance will be terminated,\nin RFC3339 text format. If specified, the instance termination action\nwill be performed at the termination time.\n"
                }
            },
            "type": "object",
            "required": [
                "automaticRestart",
                "availabilityDomain",
                "gracefulShutdowns",
                "hostErrorTimeoutSeconds",
                "instanceTerminationAction",
                "localSsdRecoveryTimeouts",
                "maintenanceInterval",
                "maxRunDurations",
                "minNodeCpus",
                "nodeAffinities",
                "onHostMaintenance",
                "onInstanceStopActions",
                "preemptible",
                "preemptionNoticeDurations",
                "provisioningModel",
                "skipGuestOsShutdown",
                "terminationTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateSchedulingGracefulShutdown:getInstanceTemplateSchedulingGracefulShutdown": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Opts-in for graceful shutdown.\n"
                },
                "maxDurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getInstanceTemplateSchedulingGracefulShutdownMaxDuration:getInstanceTemplateSchedulingGracefulShutdownMaxDuration"
                    },
                    "description": "The time allotted for the instance to gracefully shut down.\n\t\t\t\t\t\t\t\t\t\tIf the graceful shutdown isn't complete after this time, then the instance\n\t\t\t\t\t\t\t\t\t\ttransitions to the STOPPING state.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "maxDurations"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateSchedulingGracefulShutdownMaxDuration:getInstanceTemplateSchedulingGracefulShutdownMaxDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolution. Durations less than one second are represented\n\t\t\t\t\t\t\t\t\t\t\t\t\twith a 0 seconds field and a positive nanos field. Must\n\t\t\t\t\t\t\t\t\t\t\t\t\tbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\n\t\t\t\t\t\t\t\t\t\t\t\t\tThe value must be between 1 and 3600, which is 3,600 seconds (one hour).\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateSchedulingLocalSsdRecoveryTimeout:getInstanceTemplateSchedulingLocalSsdRecoveryTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateSchedulingMaxRunDuration:getInstanceTemplateSchedulingMaxRunDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateSchedulingNodeAffinity:getInstanceTemplateSchedulingNodeAffinity": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The key for the node affinity label.\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator. Can be `IN` for node-affinities\nor `NOT_IN` for anti-affinities.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "operator",
                "values"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateSchedulingOnInstanceStopAction:getInstanceTemplateSchedulingOnInstanceStopAction": {
            "properties": {
                "discardLocalSsd": {
                    "type": "boolean",
                    "description": "If true, the contents of any attached Local SSD disks will be discarded.\n"
                }
            },
            "type": "object",
            "required": [
                "discardLocalSsd"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateSchedulingPreemptionNoticeDuration:getInstanceTemplateSchedulingPreemptionNoticeDuration": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateServiceAccount:getInstanceTemplateServiceAccount": {
            "properties": {
                "email": {
                    "type": "string",
                    "description": "The service account e-mail address. If not given, the\ndefault Google Compute Engine service account is used.\n"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of service scopes. Both OAuth2 URLs and gcloud\nshort names are supported. To allow full access to all Cloud APIs, use the\n`cloud-platform` scope. See a complete list of scopes [here](https://cloud.google.com/sdk/gcloud/reference/alpha/compute/instances/set-scopes#--scopes).\n"
                }
            },
            "type": "object",
            "required": [
                "email",
                "scopes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInstanceTemplateShieldedInstanceConfig:getInstanceTemplateShieldedInstanceConfig": {
            "properties": {
                "enableIntegrityMonitoring": {
                    "type": "boolean",
                    "description": "- Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.\n"
                },
                "enableSecureBoot": {
                    "type": "boolean",
                    "description": "- Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.\n"
                },
                "enableVtpm": {
                    "type": "boolean",
                    "description": "- Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.\n"
                }
            },
            "type": "object",
            "required": [
                "enableIntegrityMonitoring",
                "enableSecureBoot",
                "enableVtpm"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getInterconnectLocationsLocation:getInterconnectLocationsLocation": {
            "properties": {
                "address": {
                    "type": "string",
                    "description": "The postal address of the Point of Presence.\n"
                },
                "availabilityZone": {
                    "type": "string",
                    "description": "The availability zone for this InterconnectLocation.\n"
                },
                "availableFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features available at this InterconnectLocation.\n"
                },
                "availableLinkTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of link types available at this InterconnectLocation.\n"
                },
                "city": {
                    "type": "string",
                    "description": "The city for this location.\n"
                },
                "continent": {
                    "type": "string",
                    "description": "The continent for this location.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A textual description of the resource.\n"
                },
                "facilityProvider": {
                    "type": "string",
                    "description": "The name of the provider for this facility.\n"
                },
                "facilityProviderFacilityId": {
                    "type": "string",
                    "description": "A provider-assigned Identifier for this facility.\n"
                },
                "name": {
                    "type": "string"
                },
                "peeringdbFacilityId": {
                    "type": "string",
                    "description": "The PeeringDB facility ID for this facility.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "The URI of the created resource.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of this InterconnectLocation.\n"
                },
                "supportsPzs": {
                    "type": "boolean",
                    "description": "Reserved for future use.\n"
                }
            },
            "type": "object",
            "required": [
                "address",
                "availabilityZone",
                "availableFeatures",
                "availableLinkTypes",
                "city",
                "continent",
                "description",
                "facilityProvider",
                "facilityProviderFacilityId",
                "name",
                "peeringdbFacilityId",
                "selfLink",
                "status",
                "supportsPzs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getMachineTypesMachineType:getMachineTypesMachineType": {
            "properties": {
                "accelerators": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getMachineTypesMachineTypeAccelerator:getMachineTypesMachineTypeAccelerator"
                    },
                    "description": "A list of accelerator configurations assigned to this machine type. Structure is documented below.\n"
                },
                "bundledLocalSsds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getMachineTypesMachineTypeBundledLocalSsd:getMachineTypesMachineTypeBundledLocalSsd"
                    },
                    "description": "(Beta) The configuration of bundled local SSD for the machine type. Structure is documented below.\n"
                },
                "deprecateds": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getMachineTypesMachineTypeDeprecated:getMachineTypesMachineTypeDeprecated"
                    },
                    "description": "The deprecation status associated with this machine type. Structure is documented below.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A textual description of the machine type.\n"
                },
                "guestCpus": {
                    "type": "integer",
                    "description": "The number of virtual CPUs that are available to the instance.\n"
                },
                "isSharedCpus": {
                    "type": "boolean",
                    "description": "Whether this machine type has a shared CPU.\n"
                },
                "maximumPersistentDisks": {
                    "type": "integer",
                    "description": "The maximum persistent disks allowed.\n"
                },
                "maximumPersistentDisksSizeGb": {
                    "type": "integer",
                    "description": "The maximum total persistent disks size (GB) allowed.\n"
                },
                "memoryMb": {
                    "type": "integer",
                    "description": "The amount of physical memory available to the instance, defined in MB.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the machine type.\n"
                },
                "selfLink": {
                    "type": "string",
                    "description": "The server-defined URL for the machine type.\n"
                }
            },
            "type": "object",
            "required": [
                "accelerators",
                "bundledLocalSsds",
                "deprecateds",
                "description",
                "guestCpus",
                "isSharedCpus",
                "maximumPersistentDisks",
                "maximumPersistentDisksSizeGb",
                "memoryMb",
                "name",
                "selfLink"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getMachineTypesMachineTypeAccelerator:getMachineTypesMachineTypeAccelerator": {
            "properties": {
                "guestAcceleratorCount": {
                    "type": "integer",
                    "description": "Number of accelerator cards exposed to the guest.\n"
                },
                "guestAcceleratorType": {
                    "type": "string",
                    "description": "The accelerator type resource name, not a full URL, e.g. `nvidia-tesla-t4`.\n"
                }
            },
            "type": "object",
            "required": [
                "guestAcceleratorCount",
                "guestAcceleratorType"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getMachineTypesMachineTypeBundledLocalSsd:getMachineTypesMachineTypeBundledLocalSsd": {
            "properties": {
                "defaultInterface": {
                    "type": "string",
                    "description": "(Beta) The default disk interface if the interface is not specified.\n"
                },
                "partitionCount": {
                    "type": "integer",
                    "description": "(Beta) The number of partitions.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultInterface",
                "partitionCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getMachineTypesMachineTypeDeprecated:getMachineTypesMachineTypeDeprecated": {
            "properties": {
                "replacement": {
                    "type": "string",
                    "description": "The URL of the suggested replacement for a deprecated machine type.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The deprecation state of this resource. This can be `ACTIVE`, `DEPRECATED`, `OBSOLETE`, or `DELETED`.\n"
                }
            },
            "type": "object",
            "required": [
                "replacement",
                "state"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getNetworkAttachmentConnectionEndpoint:getNetworkAttachmentConnectionEndpoint": {
            "properties": {
                "ipAddress": {
                    "type": "string",
                    "description": "The IPv4 address assigned to the producer instance network interface. This value will be a range in case of Serverless.\n"
                },
                "projectIdOrNum": {
                    "type": "string",
                    "description": "The project id or number of the interface to which the IP was assigned.\n"
                },
                "secondaryIpCidrRanges": {
                    "type": "string",
                    "description": "Alias IP ranges from the same subnetwork.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of a connected endpoint to this network attachment.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "The subnetwork used to assign the IP to the producer instance network interface.\n"
                }
            },
            "type": "object",
            "required": [
                "ipAddress",
                "projectIdOrNum",
                "secondaryIpCidrRanges",
                "status",
                "subnetwork"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getNetworkEndpointGroupsNetworkEndpointGroup:getNetworkEndpointGroupsNetworkEndpointGroup": {
            "properties": {
                "defaultPort": {
                    "type": "integer",
                    "description": "The default port used if the port number is not specified in the\nnetwork endpoint.\n"
                },
                "deletionPolicy": {
                    "type": "string",
                    "description": "Whether Terraform will be prevented from destroying the instance. Defaults to \"DELETE\".\nWhen a 'terraform destroy' or 'terraform apply' would delete the instance,\nthe command will fail if this field is set to \"PREVENT\" in Terraform state.\nWhen set to \"ABANDON\", the command will remove the resource from Terraform\nmanagement without updating or deleting the resource in the API.\nWhen set to \"DELETE\", deleting the resource is allowed.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource. Provide this property when\nyou create the resource.\n"
                },
                "generatedId": {
                    "type": "integer",
                    "description": "The uniquely generated identifier for the resource. This identifier is defined by the server.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the resource; provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression 'a-z?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.\n"
                },
                "network": {
                    "type": "string",
                    "description": "The network to which all network endpoints in the NEG belong.\nUses \"default\" project network if unspecified.\n"
                },
                "networkEndpointType": {
                    "type": "string",
                    "description": "Type of network endpoints in this network endpoint group.\nNON_GCP_PRIVATE_IP_PORT is used for hybrid connectivity network\nendpoint groups (see https://cloud.google.com/load-balancing/docs/hybrid).\nNote that NON_GCP_PRIVATE_IP_PORT can only be used with Backend Services\nthat 1) have the following load balancing schemes: EXTERNAL, EXTERNAL_MANAGED,\nINTERNAL_MANAGED, and INTERNAL_SELF_MANAGED and 2) support the RATE or\nCONNECTION balancing modes.\n\nPossible values include: GCE_VM_IP, GCE_VM_IP_PORT, NON_GCP_PRIVATE_IP_PORT, INTERNET_IP_PORT, INTERNET_FQDN_PORT, SERVERLESS, and PRIVATE_SERVICE_CONNECT. Default value: \"GCE_VM_IP_PORT\" Possible values: [\"GCE_VM_IP\", \"GCE_VM_IP_PORT\", \"NON_GCP_PRIVATE_IP_PORT\", \"INTERNET_IP_PORT\", \"INTERNET_FQDN_PORT\", \"SERVERLESS\", \"PRIVATE_SERVICE_CONNECT\", \"GCE_VM_IP_DEDICATED_BACKEND\"]\n"
                },
                "project": {
                    "type": "string",
                    "description": "The ID of the project to list Network Endpoint Groups in. If it is not provided, the provider project is used.\n"
                },
                "selfLink": {
                    "type": "string"
                },
                "size": {
                    "type": "integer",
                    "description": "Number of network endpoints in the network endpoint group.\n"
                },
                "subnetwork": {
                    "type": "string",
                    "description": "Optional subnetwork to which all network endpoints in the NEG belong.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone to list Network Endpoint Groups for. If \u003cspan pulumi-lang-nodejs=\"`zone`\" pulumi-lang-dotnet=\"`Zone`\" pulumi-lang-go=\"`zone`\" pulumi-lang-python=\"`zone`\" pulumi-lang-yaml=\"`zone`\" pulumi-lang-java=\"`zone`\" pulumi-lang-hcl=\"`zone`\"\u003e`zone`\u003c/span\u003e is not specified, the provider-level zone must be set and is used\ninstead.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultPort",
                "deletionPolicy",
                "description",
                "generatedId",
                "name",
                "network",
                "networkEndpointType",
                "project",
                "selfLink",
                "size",
                "subnetwork",
                "zone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceBackend:getRegionBackendServiceBackend": {
            "properties": {
                "balancingMode": {
                    "type": "string",
                    "description": "Specifies the balancing mode for this backend.\n\nSee the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode)\nfor an explanation of load balancing modes. Default value: \"UTILIZATION\" Possible values: [\"UTILIZATION\", \"RATE\", \"CONNECTION\", \"CUSTOM_METRICS\"]\n"
                },
                "capacityScaler": {
                    "type": "number",
                    "description": "A multiplier applied to the group's maximum servicing capacity\n(based on UTILIZATION, RATE or CONNECTION).\n\n~\u003e**NOTE**: This field cannot be set for\nINTERNAL region backend services (default loadBalancingScheme),\nbut is required for non-INTERNAL backend service. The total\u003cspan pulumi-lang-nodejs=\"\ncapacityScaler \" pulumi-lang-dotnet=\"\nCapacityScaler \" pulumi-lang-go=\"\ncapacityScaler \" pulumi-lang-python=\"\ncapacity_scaler \" pulumi-lang-yaml=\"\ncapacityScaler \" pulumi-lang-java=\"\ncapacityScaler \" pulumi-lang-hcl=\"\ncapacity_scaler \"\u003e\ncapacityScaler \u003c/span\u003efor all backends must be non-zero.\n\nA setting of 0 means the group is completely drained, offering\n0% of its available Capacity. Valid range is [0.0,1.0].\n"
                },
                "customMetrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceBackendCustomMetric:getRegionBackendServiceBackendCustomMetric"
                    },
                    "description": "The set of custom metrics that are used for \u003ccode\u003eCUSTOM_METRICS\u003c/code\u003e BalancingMode.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description of this resource.\nProvide this property when you create the resource.\n"
                },
                "failover": {
                    "type": "boolean",
                    "description": "This field designates whether this is a failover backend. More\nthan one failover backend can be configured for a given RegionBackendService.\n"
                },
                "group": {
                    "type": "string",
                    "description": "The fully-qualified URL of an Instance Group or Network Endpoint\nGroup resource. In case of instance group this defines the list\nof instances that serve traffic. Member virtual machine\ninstances from each instance group must live in the same zone as\nthe instance group itself. No two backends in a backend service\nare allowed to use same Instance Group resource.\n\nFor Network Endpoint Groups this defines list of endpoints. All\nendpoints of Network Endpoint Group must be hosted on instances\nlocated in the same zone as the Network Endpoint Group.\n\nBackend services cannot mix Instance Group and\nNetwork Endpoint Group backends.\n\nWhen the 'load_balancing_scheme' is INTERNAL, only instance groups\nare supported.\n\nNote that you must specify an Instance Group or Network Endpoint\nGroup resource using the fully-qualified URL, rather than a\npartial URL.\n"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections for the group. Can\nbe used with either CONNECTION or UTILIZATION balancing modes.\nCannot be set for INTERNAL backend services.\n\nFor CONNECTION mode, either maxConnections or one\nof maxConnectionsPerInstance or maxConnectionsPerEndpoint,\nas appropriate for group type, must be set.\n"
                },
                "maxConnectionsPerEndpoint": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections that a single backend\nnetwork endpoint can handle. Cannot be set\nfor INTERNAL backend services.\n\nThis is used to calculate the capacity of the group. Can be\nused in either CONNECTION or UTILIZATION balancing modes. For\nCONNECTION mode, either maxConnections or\nmaxConnectionsPerEndpoint must be set.\n"
                },
                "maxConnectionsPerInstance": {
                    "type": "integer",
                    "description": "The max number of simultaneous connections that a single\nbackend instance can handle. Cannot be set for INTERNAL backend\nservices.\n\nThis is used to calculate the capacity of the group.\nCan be used in either CONNECTION or UTILIZATION balancing modes.\nFor CONNECTION mode, either maxConnections or\nmaxConnectionsPerInstance must be set.\n"
                },
                "maxInFlightRequests": {
                    "type": "integer",
                    "description": "Defines a maximum number of in-flight requests for the whole NEG\nor instance group. Not available if backend's balancingMode is RATE\nor CONNECTION.\n"
                },
                "maxInFlightRequestsPerEndpoint": {
                    "type": "integer",
                    "description": "Defines a maximum number of in-flight requests for a single endpoint.\nNot available if backend's balancingMode is RATE or CONNECTION.\n"
                },
                "maxInFlightRequestsPerInstance": {
                    "type": "integer",
                    "description": "Defines a maximum number of in-flight requests for a single VM.\nNot available if backend's balancingMode is RATE or CONNECTION.\n"
                },
                "maxRate": {
                    "type": "integer",
                    "description": "The max requests per second (RPS) of the group. Cannot be set\nfor INTERNAL backend services.\n\nCan be used with either RATE or UTILIZATION balancing modes,\nbut required if RATE mode. Either maxRate or one\nof maxRatePerInstance or maxRatePerEndpoint, as appropriate for\ngroup type, must be set.\n"
                },
                "maxRatePerEndpoint": {
                    "type": "number",
                    "description": "The max requests per second (RPS) that a single backend network\nendpoint can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerEndpoint must be set. Cannot be set\nfor INTERNAL backend services.\n"
                },
                "maxRatePerInstance": {
                    "type": "number",
                    "description": "The max requests per second (RPS) that a single backend\ninstance can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerInstance must be set. Cannot be set\nfor INTERNAL backend services.\n"
                },
                "maxUtilization": {
                    "type": "number",
                    "description": "Used when balancingMode is UTILIZATION. This ratio defines the\nCPU utilization target for the group. Valid range is [0.0, 1.0].\nCannot be set for INTERNAL backend services.\n"
                },
                "trafficDuration": {
                    "type": "string",
                    "description": "This field specifies how long a connection should be kept alive for:\n- LONG: Most of the requests are expected to take more than multiple\n  seconds to finish.\n- SHORT: Most requests are expected to finish with a sub-second latency. Possible values: [\"LONG\", \"SHORT\"]\n"
                }
            },
            "type": "object",
            "required": [
                "balancingMode",
                "capacityScaler",
                "customMetrics",
                "description",
                "failover",
                "group",
                "maxConnections",
                "maxConnectionsPerEndpoint",
                "maxConnectionsPerInstance",
                "maxInFlightRequests",
                "maxInFlightRequestsPerEndpoint",
                "maxInFlightRequestsPerInstance",
                "maxRate",
                "maxRatePerEndpoint",
                "maxRatePerInstance",
                "maxUtilization",
                "trafficDuration"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceBackendCustomMetric:getRegionBackendServiceBackendCustomMetric": {
            "properties": {
                "dryRun": {
                    "type": "boolean",
                    "description": "If true, the metric data is collected and reported to Cloud\nMonitoring, but is not used for load balancing.\n"
                },
                "maxUtilization": {
                    "type": "number",
                    "description": "Optional parameter to define a target utilization for the Custom Metrics\nbalancing mode. The valid range is \u003ccode\u003e[0.0, 1.0]\u003c/code\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the regional backend service.\n"
                }
            },
            "type": "object",
            "required": [
                "dryRun",
                "maxUtilization",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceCdnPolicy:getRegionBackendServiceCdnPolicy": {
            "properties": {
                "cacheKeyPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceCdnPolicyCacheKeyPolicy:getRegionBackendServiceCdnPolicyCacheKeyPolicy"
                    },
                    "description": "The CacheKeyPolicy for this CdnPolicy.\n"
                },
                "cacheMode": {
                    "type": "string",
                    "description": "Specifies the cache setting for all responses from this backend.\nThe possible values are: USE_ORIGIN_HEADERS, FORCE_CACHE_ALL and CACHE_ALL_STATIC Possible values: [\"USE_ORIGIN_HEADERS\", \"FORCE_CACHE_ALL\", \"CACHE_ALL_STATIC\"]\n"
                },
                "clientTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin.\n"
                },
                "defaultTtl": {
                    "type": "integer",
                    "description": "Specifies the default TTL for cached content served by this origin for responses\nthat do not have an existing valid TTL (max-age or s-max-age).\n"
                },
                "maxTtl": {
                    "type": "integer",
                    "description": "Specifies the maximum allowed TTL for cached content served by this origin.\n"
                },
                "negativeCaching": {
                    "type": "boolean",
                    "description": "Negative caching allows per-status code TTLs to be set, in order to apply fine-grained caching for common errors or redirects.\n"
                },
                "negativeCachingPolicies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceCdnPolicyNegativeCachingPolicy:getRegionBackendServiceCdnPolicyNegativeCachingPolicy"
                    },
                    "description": "Sets a cache TTL for the specified HTTP status code. negativeCaching must be enabled to configure negativeCachingPolicy.\nOmitting the policy and leaving negativeCaching enabled will use Cloud CDN's default cache TTLs.\n"
                },
                "serveWhileStale": {
                    "type": "integer",
                    "description": "Serve existing content from the cache (if available) when revalidating content with the origin, or when an error is encountered when refreshing the cache.\n"
                },
                "signedUrlCacheMaxAgeSec": {
                    "type": "integer",
                    "description": "Maximum number of seconds the response to a signed URL request\nwill be considered fresh, defaults to 1hr (3600s). After this\ntime period, the response will be revalidated before\nbeing served.\n\nWhen serving responses to signed URL requests, Cloud CDN will\ninternally behave as though all responses from this backend had a\n\"Cache-Control: public, max-age=[TTL]\" header, regardless of any\nexisting Cache-Control header. The actual headers served in\nresponses will not be altered.\n"
                }
            },
            "type": "object",
            "required": [
                "cacheKeyPolicies",
                "cacheMode",
                "clientTtl",
                "defaultTtl",
                "maxTtl",
                "negativeCaching",
                "negativeCachingPolicies",
                "serveWhileStale",
                "signedUrlCacheMaxAgeSec"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceCdnPolicyCacheKeyPolicy:getRegionBackendServiceCdnPolicyCacheKeyPolicy": {
            "properties": {
                "includeHost": {
                    "type": "boolean",
                    "description": "If true requests to different hosts will be cached separately.\n"
                },
                "includeNamedCookies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of cookies to include in cache keys.\n"
                },
                "includeProtocol": {
                    "type": "boolean",
                    "description": "If true, http and https requests will be cached separately.\n"
                },
                "includeQueryString": {
                    "type": "boolean",
                    "description": "If true, include query string parameters in the cache key\naccording to\u003cspan pulumi-lang-nodejs=\" queryStringWhitelist \" pulumi-lang-dotnet=\" QueryStringWhitelist \" pulumi-lang-go=\" queryStringWhitelist \" pulumi-lang-python=\" query_string_whitelist \" pulumi-lang-yaml=\" queryStringWhitelist \" pulumi-lang-java=\" queryStringWhitelist \" pulumi-lang-hcl=\" query_string_whitelist \"\u003e queryStringWhitelist \u003c/span\u003eand\nquery_string_blacklist. If neither is set, the entire query\nstring will be included.\n\nIf false, the query string will be excluded from the cache\nkey entirely.\n"
                },
                "queryStringBlacklists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to exclude in cache keys.\n\nAll other parameters will be included. Either specify\u003cspan pulumi-lang-nodejs=\"\nqueryStringWhitelist \" pulumi-lang-dotnet=\"\nQueryStringWhitelist \" pulumi-lang-go=\"\nqueryStringWhitelist \" pulumi-lang-python=\"\nquery_string_whitelist \" pulumi-lang-yaml=\"\nqueryStringWhitelist \" pulumi-lang-java=\"\nqueryStringWhitelist \" pulumi-lang-hcl=\"\nquery_string_whitelist \"\u003e\nqueryStringWhitelist \u003c/span\u003eor query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.\n"
                },
                "queryStringWhitelists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Names of query string parameters to include in cache keys.\n\nAll other parameters will be excluded. Either specify\u003cspan pulumi-lang-nodejs=\"\nqueryStringWhitelist \" pulumi-lang-dotnet=\"\nQueryStringWhitelist \" pulumi-lang-go=\"\nqueryStringWhitelist \" pulumi-lang-python=\"\nquery_string_whitelist \" pulumi-lang-yaml=\"\nqueryStringWhitelist \" pulumi-lang-java=\"\nqueryStringWhitelist \" pulumi-lang-hcl=\"\nquery_string_whitelist \"\u003e\nqueryStringWhitelist \u003c/span\u003eor query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.\n"
                }
            },
            "type": "object",
            "required": [
                "includeHost",
                "includeNamedCookies",
                "includeProtocol",
                "includeQueryString",
                "queryStringBlacklists",
                "queryStringWhitelists"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceCdnPolicyNegativeCachingPolicy:getRegionBackendServiceCdnPolicyNegativeCachingPolicy": {
            "properties": {
                "code": {
                    "type": "integer",
                    "description": "The HTTP status code to define a TTL against. Only HTTP status codes 300, 301, 308, 404, 405, 410, 421, 451 and 501\ncan be specified as values, and you cannot specify a status code more than once.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The TTL (in seconds) for which to cache responses with the corresponding status code. The maximum allowed value is 1800s\n(30 minutes), noting that infrequently accessed objects may be evicted from the cache before the defined TTL.\n"
                }
            },
            "type": "object",
            "required": [
                "code",
                "ttl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceCircuitBreaker:getRegionBackendServiceCircuitBreaker": {
            "properties": {
                "connectTimeouts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceCircuitBreakerConnectTimeout:getRegionBackendServiceCircuitBreakerConnectTimeout"
                    },
                    "description": "The timeout for new network connections to hosts.\n"
                },
                "maxConnections": {
                    "type": "integer",
                    "description": "The maximum number of connections to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxPendingRequests": {
                    "type": "integer",
                    "description": "The maximum number of pending requests to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxRequests": {
                    "type": "integer",
                    "description": "The maximum number of parallel requests to the backend cluster.\nDefaults to 1024.\n"
                },
                "maxRequestsPerConnection": {
                    "type": "integer",
                    "description": "Maximum requests for a single backend connection. This parameter\nis respected by both the HTTP/1.1 and HTTP/2 implementations. If\nnot specified, there is no limit. Setting this parameter to 1\nwill effectively disable keep alive.\n"
                },
                "maxRetries": {
                    "type": "integer",
                    "description": "The maximum number of parallel retries to the backend cluster.\nDefaults to 3.\n"
                }
            },
            "type": "object",
            "required": [
                "connectTimeouts",
                "maxConnections",
                "maxPendingRequests",
                "maxRequests",
                "maxRequestsPerConnection",
                "maxRetries"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceCircuitBreakerConnectTimeout:getRegionBackendServiceCircuitBreakerConnectTimeout": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceConnectionTrackingPolicy:getRegionBackendServiceConnectionTrackingPolicy": {
            "properties": {
                "connectionPersistenceOnUnhealthyBackends": {
                    "type": "string",
                    "description": "Specifies connection persistence when backends are unhealthy.\n\nIf set to 'DEFAULT_FOR_PROTOCOL', the existing connections persist on\nunhealthy backends only for connection-oriented protocols (TCP and SCTP)\nand only if the Tracking Mode is PER_CONNECTION (default tracking mode)\nor the Session Affinity is configured for 5-tuple. They do not persist\nfor UDP.\n\nIf set to 'NEVER_PERSIST', after a backend becomes unhealthy, the existing\nconnections on the unhealthy backend are never persisted on the unhealthy\nbackend. They are always diverted to newly selected healthy backends\n(unless all backends are unhealthy).\n\nIf set to 'ALWAYS_PERSIST', existing connections always persist on\nunhealthy backends regardless of protocol and session affinity. It is\ngenerally not recommended to use this mode overriding the default. Default value: \"DEFAULT_FOR_PROTOCOL\" Possible values: [\"DEFAULT_FOR_PROTOCOL\", \"NEVER_PERSIST\", \"ALWAYS_PERSIST\"]\n"
                },
                "enableStrongAffinity": {
                    "type": "boolean",
                    "description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly.\n"
                },
                "idleTimeoutSec": {
                    "type": "integer",
                    "description": "Specifies how long to keep a Connection Tracking entry while there is\nno matching traffic (in seconds).\n\nFor L4 ILB the minimum(default) is 10 minutes and maximum is 16 hours.\n\nFor NLB the minimum(default) is 60 seconds and the maximum is 16 hours.\n"
                },
                "trackingMode": {
                    "type": "string",
                    "description": "Specifies the key used for connection tracking. There are two options:\n'PER_CONNECTION': The Connection Tracking is performed as per the\nConnection Key (default Hash Method) for the specific protocol.\n\n'PER_SESSION': The Connection Tracking is performed as per the\nconfigured Session Affinity. It matches the configured Session Affinity. Default value: \"PER_CONNECTION\" Possible values: [\"PER_CONNECTION\", \"PER_SESSION\"]\n"
                }
            },
            "type": "object",
            "required": [
                "connectionPersistenceOnUnhealthyBackends",
                "enableStrongAffinity",
                "idleTimeoutSec",
                "trackingMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceConsistentHash:getRegionBackendServiceConsistentHash": {
            "properties": {
                "httpCookies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceConsistentHashHttpCooky:getRegionBackendServiceConsistentHashHttpCooky"
                    },
                    "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie\nthat will be used as the hash key for the consistent hash load\nbalancer. If the cookie is not present, it will be generated.\nThis field is applicable if the sessionAffinity is set to HTTP_COOKIE.\n"
                },
                "httpHeaderName": {
                    "type": "string",
                    "description": "The hash based on the value of the specified header field.\nThis field is applicable if the sessionAffinity is set to HEADER_FIELD.\n"
                },
                "minimumRingSize": {
                    "type": "integer",
                    "description": "The minimum number of virtual nodes to use for the hash ring.\nLarger ring sizes result in more granular load\ndistributions. If the number of hosts in the load balancing pool\nis larger than the ring size, each host will be assigned a single\nvirtual node.\nDefaults to 1024.\n"
                }
            },
            "type": "object",
            "required": [
                "httpCookies",
                "httpHeaderName",
                "minimumRingSize"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceConsistentHashHttpCooky:getRegionBackendServiceConsistentHashHttpCooky": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the regional backend service.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to set for the cookie.\n"
                },
                "ttls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceConsistentHashHttpCookyTtl:getRegionBackendServiceConsistentHashHttpCookyTtl"
                    },
                    "description": "Lifetime of the cookie.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "path",
                "ttls"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceConsistentHashHttpCookyTtl:getRegionBackendServiceConsistentHashHttpCookyTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceCustomMetric:getRegionBackendServiceCustomMetric": {
            "properties": {
                "dryRun": {
                    "type": "boolean",
                    "description": "If true, the metric data is not used for load balancing.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the regional backend service.\n"
                }
            },
            "type": "object",
            "required": [
                "dryRun",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceDynamicForwarding:getRegionBackendServiceDynamicForwarding": {
            "properties": {
                "forwardProxies": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceDynamicForwardingForwardProxy:getRegionBackendServiceDynamicForwardingForwardProxy"
                    },
                    "description": "Dynamic Forwarding Proxy configuration.\n"
                },
                "ipPortSelections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceDynamicForwardingIpPortSelection:getRegionBackendServiceDynamicForwardingIpPortSelection"
                    },
                    "description": "IP:PORT based dynamic forwarding configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "forwardProxies",
                "ipPortSelections"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceDynamicForwardingForwardProxy:getRegionBackendServiceDynamicForwardingForwardProxy": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "A boolean flag enabling dynamic forwarding proxy.\n"
                },
                "proxyMode": {
                    "type": "string",
                    "description": "Determines the dynamic forwarding proxy mode Possible values: [\"DIRECT_FORWARDING\", \"CLOUD_RUN\"]\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "proxyMode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceDynamicForwardingIpPortSelection:getRegionBackendServiceDynamicForwardingIpPortSelection": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "A boolean flag enabling IP:PORT based dynamic forwarding.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceFailoverPolicy:getRegionBackendServiceFailoverPolicy": {
            "properties": {
                "disableConnectionDrainOnFailover": {
                    "type": "boolean",
                    "description": "On failover or failback, this field indicates whether connection drain\nwill be honored. Setting this to true has the following effect: connections\nto the old active pool are not drained. Connections to the new active pool\nuse the timeout of 10 min (currently fixed). Setting to false has the\nfollowing effect: both old and new connections will have a drain timeout\nof 10 min.\nThis can be set to true only if the protocol is TCP.\nThe default is false.\n"
                },
                "dropTrafficIfUnhealthy": {
                    "type": "boolean",
                    "description": "This option is used only when no healthy VMs are detected in the primary\nand backup instance groups. When set to true, traffic is dropped. When\nset to false, new connections are sent across all VMs in the primary group.\nThe default is false.\n"
                },
                "failoverRatio": {
                    "type": "number",
                    "description": "The value of the field must be in [0, 1]. If the ratio of the healthy\nVMs in the primary backend is at or below this number, traffic arriving\nat the load-balanced IP will be directed to the failover backend.\nIn case where 'failoverRatio' is not set or all the VMs in the backup\nbackend are unhealthy, the traffic will be directed back to the primary\nbackend in the \"force\" mode, where traffic will be spread to the healthy\nVMs with the best effort, or to all VMs when no VM is healthy.\nThis field is only used with l4 load balancing.\n"
                }
            },
            "type": "object",
            "required": [
                "disableConnectionDrainOnFailover",
                "dropTrafficIfUnhealthy",
                "failoverRatio"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceHaPolicy:getRegionBackendServiceHaPolicy": {
            "properties": {
                "fastIpMove": {
                    "type": "string",
                    "description": "Specifies whether fast IP move is enabled, and if so, the mechanism to achieve it.\nSupported values are:\n\n* 'DISABLED': Fast IP Move is disabled. You can only use the haPolicy.leader API to\n              update the leader.\n\n* 'GARP_RA': Provides a method to very quickly define a new network endpoint as the\n             leader. This method is faster than updating the leader using the\n             haPolicy.leader API. Fast IP move works as follows: The VM hosting the\n             network endpoint that should become the new leader sends either a\n             Gratuitous ARP (GARP) packet (IPv4) or an ICMPv6 Router Advertisement(RA)\n             packet (IPv6). Google Cloud immediately but temporarily associates the\n             forwarding rule IP address with that VM, and both new and in-flight packets\n             are quickly delivered to that VM. Possible values: [\"DISABLED\", \"GARP_RA\"]\n"
                },
                "leaders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceHaPolicyLeader:getRegionBackendServiceHaPolicyLeader"
                    },
                    "description": "Selects one of the network endpoints attached to the backend NEGs of this service as the\nactive endpoint (the leader) that receives all traffic.\n"
                }
            },
            "type": "object",
            "required": [
                "fastIpMove",
                "leaders"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceHaPolicyLeader:getRegionBackendServiceHaPolicyLeader": {
            "properties": {
                "backendGroup": {
                    "type": "string",
                    "description": "A fully-qualified URL of the zonal Network Endpoint Group (NEG) that the leader is\nattached to.\n"
                },
                "networkEndpoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceHaPolicyLeaderNetworkEndpoint:getRegionBackendServiceHaPolicyLeaderNetworkEndpoint"
                    },
                    "description": "The network endpoint within the leader.backendGroup that is designated as the leader.\n"
                }
            },
            "type": "object",
            "required": [
                "backendGroup",
                "networkEndpoints"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceHaPolicyLeaderNetworkEndpoint:getRegionBackendServiceHaPolicyLeaderNetworkEndpoint": {
            "properties": {
                "instance": {
                    "type": "string",
                    "description": "The name of the VM instance of the leader network endpoint. The instance must\nalready be attached to the NEG specified in the haPolicy.leader.backendGroup.\n"
                }
            },
            "type": "object",
            "required": [
                "instance"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceIap:getRegionBackendServiceIap": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.\n"
                },
                "oauth2ClientId": {
                    "type": "string",
                    "description": "OAuth2 Client ID for IAP\n"
                },
                "oauth2ClientSecret": {
                    "type": "string",
                    "description": "OAuth2 Client Secret for IAP\n"
                },
                "oauth2ClientSecretSha256": {
                    "type": "string",
                    "description": "OAuth2 Client Secret SHA-256 for IAP\n"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "oauth2ClientId",
                "oauth2ClientSecret",
                "oauth2ClientSecretSha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceLogConfig:getRegionBackendServiceLogConfig": {
            "properties": {
                "enable": {
                    "type": "boolean",
                    "description": "Whether to enable logging for the load balancer traffic served by this backend service.\n"
                },
                "optionalFields": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Specifies the fields to include in logging. This field can only be specified if logging is enabled for this backend service.\n"
                },
                "optionalMode": {
                    "type": "string",
                    "description": "Specifies the optional logging mode for the load balancer traffic.\nSupported values: INCLUDE_ALL_OPTIONAL, EXCLUDE_ALL_OPTIONAL, CUSTOM. Possible values: [\"INCLUDE_ALL_OPTIONAL\", \"EXCLUDE_ALL_OPTIONAL\", \"CUSTOM\"]\n"
                },
                "sampleRate": {
                    "type": "number",
                    "description": "This field can only be specified if logging is enabled for this backend service. The value of\nthe field must be in [0, 1]. This configures the sampling rate of requests to the load balancer\nwhere 1.0 means all logged requests are reported and 0.0 means no logged requests are reported.\nThe default value is 1.0.\n"
                }
            },
            "type": "object",
            "required": [
                "enable",
                "optionalFields",
                "optionalMode",
                "sampleRate"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceNetworkPassThroughLbTrafficPolicy:getRegionBackendServiceNetworkPassThroughLbTrafficPolicy": {
            "properties": {
                "zonalAffinities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity:getRegionBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity"
                    },
                    "description": "When configured, new connections are load balanced across healthy backend endpoints in the local zone.\n"
                }
            },
            "type": "object",
            "required": [
                "zonalAffinities"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity:getRegionBackendServiceNetworkPassThroughLbTrafficPolicyZonalAffinity": {
            "properties": {
                "spillover": {
                    "type": "string",
                    "description": "This field indicates whether zonal affinity is enabled or not. Default value: \"ZONAL_AFFINITY_DISABLED\" Possible values: [\"ZONAL_AFFINITY_DISABLED\", \"ZONAL_AFFINITY_SPILL_CROSS_ZONE\", \"ZONAL_AFFINITY_STAY_WITHIN_ZONE\"]\n"
                },
                "spilloverRatio": {
                    "type": "number",
                    "description": "The value of the field must be in [0, 1]. When the ratio of the count of healthy backend endpoints in a zone\nto the count of backend endpoints in that same zone is equal to or above this threshold, the load balancer\ndistributes new connections to all healthy endpoints in the local zone only. When the ratio of the count\nof healthy backend endpoints in a zone to the count of backend endpoints in that same zone is below this\nthreshold, the load balancer distributes all new connections to all healthy endpoints across all zones.\n"
                }
            },
            "type": "object",
            "required": [
                "spillover",
                "spilloverRatio"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceOutlierDetection:getRegionBackendServiceOutlierDetection": {
            "properties": {
                "baseEjectionTimes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceOutlierDetectionBaseEjectionTime:getRegionBackendServiceOutlierDetectionBaseEjectionTime"
                    },
                    "description": "The base time that a host is ejected for. The real time is equal to the base\ntime multiplied by the number of times the host has been ejected. Defaults to\n30000ms or 30s.\n"
                },
                "consecutiveErrors": {
                    "type": "integer",
                    "description": "Number of errors before a host is ejected from the connection pool. When the\nbackend host is accessed over HTTP, a 5xx return code qualifies as an error.\nDefaults to 5.\n"
                },
                "consecutiveGatewayFailure": {
                    "type": "integer",
                    "description": "The number of consecutive gateway failures (502, 503, 504 status or connection\nerrors that are mapped to one of those status codes) before a consecutive\ngateway failure ejection occurs. Defaults to 5.\n"
                },
                "enforcingConsecutiveErrors": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive 5xx. This setting can be used to disable\nejection or to ramp it up slowly. Defaults to 100.\n"
                },
                "enforcingConsecutiveGatewayFailure": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive gateway failures. This setting can be\nused to disable ejection or to ramp it up slowly. Defaults to 0.\n"
                },
                "enforcingSuccessRate": {
                    "type": "integer",
                    "description": "The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through success rate statistics. This setting can be used to\ndisable ejection or to ramp it up slowly. Defaults to 100.\n"
                },
                "intervals": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceOutlierDetectionInterval:getRegionBackendServiceOutlierDetectionInterval"
                    },
                    "description": "Time interval between ejection sweep analysis. This can result in both new\nejections as well as hosts being returned to service. Defaults to 10 seconds.\n"
                },
                "maxEjectionPercent": {
                    "type": "integer",
                    "description": "Maximum percentage of hosts in the load balancing pool for the backend service\nthat can be ejected. Defaults to 10%.\n"
                },
                "successRateMinimumHosts": {
                    "type": "integer",
                    "description": "The number of hosts in a cluster that must have enough request volume to detect\nsuccess rate outliers. If the number of hosts is less than this setting, outlier\ndetection via success rate statistics is not performed for any host in the\ncluster. Defaults to 5.\n"
                },
                "successRateRequestVolume": {
                    "type": "integer",
                    "description": "The minimum number of total requests that must be collected in one interval (as\ndefined by the interval duration above) to include this host in success rate\nbased outlier detection. If the volume is lower than this setting, outlier\ndetection via success rate statistics is not performed for that host. Defaults\nto 100.\n"
                },
                "successRateStdevFactor": {
                    "type": "integer",
                    "description": "This factor is used to determine the ejection threshold for success rate outlier\nejection. The ejection threshold is the difference between the mean success\nrate, and the product of this factor and the standard deviation of the mean\nsuccess rate: mean - (stdev * success_rate_stdev_factor). This factor is divided\nby a thousand to get a double. That is, if the desired factor is 1.9, the\nruntime value should be 1900. Defaults to 1900.\n"
                }
            },
            "type": "object",
            "required": [
                "baseEjectionTimes",
                "consecutiveErrors",
                "consecutiveGatewayFailure",
                "enforcingConsecutiveErrors",
                "enforcingConsecutiveGatewayFailure",
                "enforcingSuccessRate",
                "intervals",
                "maxEjectionPercent",
                "successRateMinimumHosts",
                "successRateRequestVolume",
                "successRateStdevFactor"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceOutlierDetectionBaseEjectionTime:getRegionBackendServiceOutlierDetectionBaseEjectionTime": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceOutlierDetectionInterval:getRegionBackendServiceOutlierDetectionInterval": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceParam:getRegionBackendServiceParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to be bound to the region backend service. Tag keys and values have the\nsame definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id},\nand values are in the format tagValues/456.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceStrongSessionAffinityCooky:getRegionBackendServiceStrongSessionAffinityCooky": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the regional backend service.\n"
                },
                "path": {
                    "type": "string",
                    "description": "Path to set for the cookie.\n"
                },
                "ttls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceStrongSessionAffinityCookyTtl:getRegionBackendServiceStrongSessionAffinityCookyTtl"
                    },
                    "description": "Lifetime of the cookie.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "path",
                "ttls"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceStrongSessionAffinityCookyTtl:getRegionBackendServiceStrongSessionAffinityCookyTtl": {
            "properties": {
                "nanos": {
                    "type": "integer",
                    "description": "Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.\n"
                },
                "seconds": {
                    "type": "integer",
                    "description": "Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.\n"
                }
            },
            "type": "object",
            "required": [
                "nanos",
                "seconds"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceSubsetting:getRegionBackendServiceSubsetting": {
            "properties": {
                "policy": {
                    "type": "string",
                    "description": "The algorithm used for subsetting. Possible values: [\"CONSISTENT_HASH_SUBSETTING\"]\n"
                },
                "subsetSize": {
                    "type": "integer",
                    "description": "The number of backends per backend group assigned to each proxy instance or each service mesh client.\nAn input parameter to the CONSISTENT_HASH_SUBSETTING algorithm. Can only be set if policy is set to\nCONSISTENT_HASH_SUBSETTING. Can only be set if load balancing scheme is INTERNAL_MANAGED or INTERNAL_SELF_MANAGED.\nsubsetSize is optional for Internal HTTP(S) load balancing and required for Traffic Director.\nIf you do not provide this value, Cloud Load Balancing will calculate it dynamically to optimize the number\nof proxies/clients visible to each backend and vice versa.\nMust be greater than 0. If subsetSize is larger than the number of backends/endpoints, then subsetting is disabled.\n"
                }
            },
            "type": "object",
            "required": [
                "policy",
                "subsetSize"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceTlsSetting:getRegionBackendServiceTlsSetting": {
            "properties": {
                "authenticationConfig": {
                    "type": "string",
                    "description": "Reference to the BackendAuthenticationConfig resource from the networksecurity.googleapis.com namespace.\nCan be used in authenticating TLS connections to the backend, as specified by the authenticationMode field.\nCan only be specified if authenticationMode is not NONE.\n"
                },
                "sni": {
                    "type": "string",
                    "description": "Server Name Indication - see RFC3546 section 3.1. If set, the load balancer sends this string as the SNI hostname in the\nTLS connection to the backend, and requires that this string match a Subject Alternative Name (SAN) in the backend's\nserver certificate. With a Regional Internet NEG backend, if the SNI is specified here, the load balancer uses it\nregardless of whether the Regional Internet NEG is specified with FQDN or IP address and port.\n"
                },
                "subjectAltNames": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionBackendServiceTlsSettingSubjectAltName:getRegionBackendServiceTlsSettingSubjectAltName"
                    },
                    "description": "A list of Subject Alternative Names (SANs) that the Load Balancer verifies during a TLS handshake with the backend.\nWhen the server presents its X.509 certificate to the Load Balancer, the Load Balancer inspects the certificate's SAN field,\nand requires that at least one SAN match one of the subjectAltNames in the list. This field is limited to 5 entries.\nWhen both sni and subjectAltNames are specified, the load balancer matches the backend certificate's SAN only to\nsubjectAltNames.\n"
                }
            },
            "type": "object",
            "required": [
                "authenticationConfig",
                "sni",
                "subjectAltNames"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionBackendServiceTlsSettingSubjectAltName:getRegionBackendServiceTlsSettingSubjectAltName": {
            "properties": {
                "dnsName": {
                    "type": "string",
                    "description": "The SAN specified as a DNS Name.\n"
                },
                "uniformResourceIdentifier": {
                    "type": "string",
                    "description": "The SAN specified as a URI.\n"
                }
            },
            "type": "object",
            "required": [
                "dnsName",
                "uniformResourceIdentifier"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionDiskAsyncPrimaryDisk:getRegionDiskAsyncPrimaryDisk": {
            "properties": {
                "disk": {
                    "type": "string",
                    "description": "Primary disk for asynchronous disk replication.\n"
                }
            },
            "type": "object",
            "required": [
                "disk"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionDiskDiskEncryptionKey:getRegionDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The name of the encryption key that is stored in Google Cloud KMS.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName",
                "rawKey",
                "rsaEncryptedKey",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionDiskGuestOsFeature:getRegionDiskGuestOsFeature": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "The type of supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options. Possible values: [\"MULTI_IP_SUBNET\", \"SECURE_BOOT\", \"SEV_CAPABLE\", \"UEFI_COMPATIBLE\", \"VIRTIO_SCSI_MULTIQUEUE\", \"WINDOWS\", \"GVNIC\", \"SEV_LIVE_MIGRATABLE\", \"SEV_SNP_CAPABLE\", \"SUSPEND_RESUME_COMPATIBLE\", \"TDX_CAPABLE\", \"SEV_LIVE_MIGRATABLE_V2\", \"SNP_SVSM_CAPABLE\"]\n"
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionDiskSourceImageEncryptionKey:getRegionDiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The name of the encryption key that is stored in Google Cloud KMS.\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit\ncustomer-supplied encryption key to either encrypt or decrypt\nthis resource. You can provide either the rawKey or the rsaEncryptedKey.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionDiskSourceSnapshotEncryptionKey:getRegionDiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeyName": {
                    "type": "string",
                    "description": "The name of the encryption key that is stored in Google Cloud KMS.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.\n"
                },
                "sha256": {
                    "type": "string",
                    "description": "The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeyName",
                "rawKey",
                "sha256"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupInstance:getRegionInstanceGroupInstance": {
            "properties": {
                "instance": {
                    "type": "string",
                    "description": "URL to the instance.\n"
                },
                "namedPorts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupInstanceNamedPort:getRegionInstanceGroupInstanceNamedPort"
                    },
                    "description": "List of named ports in the group, as a list of resources, each containing:\n"
                },
                "status": {
                    "type": "string",
                    "description": "String description of current state of the instance.\n"
                }
            },
            "type": "object",
            "required": [
                "instance",
                "namedPorts",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupInstanceNamedPort:getRegionInstanceGroupInstanceNamedPort": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the instance group.  One of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Integer port number\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerAllInstancesConfig:getRegionInstanceGroupManagerAllInstancesConfig": {
            "properties": {
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The label key-value pairs that you want to patch onto the instance,\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "The metadata key-value pairs that you want to patch onto the instance. For more information, see Project and instance metadata,\n"
                }
            },
            "type": "object",
            "required": [
                "labels",
                "metadata"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerAutoHealingPolicy:getRegionInstanceGroupManagerAutoHealingPolicy": {
            "properties": {
                "healthCheck": {
                    "type": "string",
                    "description": "The health check resource that signals autohealing.\n"
                },
                "initialDelaySec": {
                    "type": "integer",
                    "description": "The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. Between 0 and 3600.\n"
                }
            },
            "type": "object",
            "required": [
                "healthCheck",
                "initialDelaySec"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicy:getRegionInstanceGroupManagerInstanceFlexibilityPolicy": {
            "properties": {
                "instanceSelections": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection"
                    },
                    "description": "Named instance selections configuring properties that the group will use when creating new VMs.\n"
                }
            },
            "type": "object",
            "required": [
                "instanceSelections"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection": {
            "properties": {
                "disks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDisk:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDisk"
                    },
                    "description": "List of disks to be attached to the instances created from this selection.\n"
                },
                "machineTypes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Full machine-type names, e.g. \"n1-standard-16\"\n"
                },
                "minCpuPlatform": {
                    "type": "string",
                    "description": "Name of the minimum CPU platform to be used by this instance selection. e.g. 'Intel Ice Lake'\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance group. Either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "rank": {
                    "type": "integer",
                    "description": "Preference of this instance selection. Lower number means higher preference. MIG will first try to create a VM based on the machine-type with lowest rank and fallback to next rank based on availability. Machine types and instance selections with the same rank have the same preference.\n"
                }
            },
            "type": "object",
            "required": [
                "disks",
                "machineTypes",
                "minCpuPlatform",
                "name",
                "rank"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDisk:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDisk": {
            "properties": {
                "architecture": {
                    "type": "string",
                    "description": "The architecture of the image. Allowed values are ARM64 or X86_64.\n"
                },
                "autoDelete": {
                    "type": "boolean",
                    "description": "Whether or not the disk should be auto-deleted. This defaults to true.\n"
                },
                "boot": {
                    "type": "boolean",
                    "description": "Indicates that this is a boot disk. This defaults to false.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.\n"
                },
                "diskEncryptionKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskDiskEncryptionKey:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskDiskEncryptionKey"
                    },
                    "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n"
                },
                "diskName": {
                    "type": "string",
                    "description": "Name of the disk. When not provided, this defaults to the name of the instance.\n"
                },
                "diskSizeGb": {
                    "type": "integer",
                    "description": "The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be one of 375 or 3000 GB, with a default of 375 GB.\n"
                },
                "diskType": {
                    "type": "string",
                    "description": "The Google Compute Engine disk type. Such as \"pd-ssd\", \"local-ssd\", \"pd-balanced\" or \"pd-standard\".\n"
                },
                "guestOsFeatures": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of features to enable on the guest operating system. Applicable only for bootable images.\n"
                },
                "interface": {
                    "type": "string",
                    "description": "Specifies the disk interface to use for attaching this disk.\n"
                },
                "labels": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskLabel:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskLabel"
                    },
                    "description": "A set of key/value label pairs to assign to disks.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.\n"
                },
                "provisionedIops": {
                    "type": "integer",
                    "description": "Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second that the disk can handle. For more details, see the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk) or the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks) depending on the selected disk_type.\n"
                },
                "provisionedThroughput": {
                    "type": "integer",
                    "description": "Indicates how much throughput to provision for the disk, in MB/s. This sets the amount of data that can be read or written from the disk per second. Values must greater than or equal to 1. For more details, see the [Hyperdisk documentation](https://cloud.google.com/compute/docs/disks/hyperdisks).\n"
                },
                "resourceManagerTags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskResourceManagerTag:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskResourceManagerTag"
                    },
                    "description": "A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored (both PUT \u0026 PATCH) when empty.\n"
                },
                "resourcePolicies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list (short name or id) of resource policies to attach to this disk. Currently a max of 1 resource policy is supported.\n"
                },
                "source": {
                    "type": "string",
                    "description": "The name (not self_link) of the disk (such as those managed by google_compute_disk) to attach. \u003e Note: Either source or\u003cspan pulumi-lang-nodejs=\" sourceImage \" pulumi-lang-dotnet=\" SourceImage \" pulumi-lang-go=\" sourceImage \" pulumi-lang-python=\" source_image \" pulumi-lang-yaml=\" sourceImage \" pulumi-lang-java=\" sourceImage \" pulumi-lang-hcl=\" source_image \"\u003e sourceImage \u003c/span\u003eis required when creating a new instance except for when creating a local SSD.\n"
                },
                "sourceImage": {
                    "type": "string",
                    "description": "The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}. \u003e Note: Either source or\u003cspan pulumi-lang-nodejs=\" sourceImage \" pulumi-lang-dotnet=\" SourceImage \" pulumi-lang-go=\" sourceImage \" pulumi-lang-python=\" source_image \" pulumi-lang-yaml=\" sourceImage \" pulumi-lang-java=\" sourceImage \" pulumi-lang-hcl=\" source_image \"\u003e sourceImage \u003c/span\u003eis required when creating a new instance except for when creating a local SSD.\n"
                },
                "sourceImageEncryptionKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceImageEncryptionKey:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceImageEncryptionKey"
                    },
                    "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. Instance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys.\n"
                },
                "sourceSnapshot": {
                    "type": "string",
                    "description": "The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot, initializeParams.sourceImage, or disks.source is required except for local SSD.\n"
                },
                "sourceSnapshotEncryptionKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceSnapshotEncryptionKey:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceSnapshotEncryptionKey"
                    },
                    "description": "The customer-supplied encryption key of the source snapshot.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of Google Compute Engine disk, can be either \"SCRATCH\" or \"PERSISTENT\".\n"
                }
            },
            "type": "object",
            "required": [
                "architecture",
                "autoDelete",
                "boot",
                "deviceName",
                "diskEncryptionKeys",
                "diskName",
                "diskSizeGb",
                "diskType",
                "guestOsFeatures",
                "interface",
                "labels",
                "mode",
                "provisionedIops",
                "provisionedThroughput",
                "resourceManagerTags",
                "resourcePolicies",
                "source",
                "sourceImage",
                "sourceImageEncryptionKeys",
                "sourceSnapshot",
                "sourceSnapshotEncryptionKeys",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskDiskEncryptionKey:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskDiskEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS.\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskLabel:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskLabel": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The unique key of the label to assign to disks.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the label to assign to disks.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskResourceManagerTag:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskResourceManagerTag": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The unique key of the resource manager tag to assign to disks. Keys must be in the format tagKeys/{tag_key_id}.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the resource manager tag to assign to disks. Values must be in the format tagValues/456.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceImageEncryptionKey:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceImageEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceSnapshotEncryptionKey:getRegionInstanceGroupManagerInstanceFlexibilityPolicyInstanceSelectionDiskSourceSnapshotEncryptionKey": {
            "properties": {
                "kmsKeySelfLink": {
                    "type": "string",
                    "description": "The self link of the encryption key that is stored in Google Cloud KMS. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "kmsKeyServiceAccount": {
                    "type": "string",
                    "description": "The service account being used for the encryption request for the given KMS key. If absent, the Compute Engine default service account is used.\n"
                },
                "rawKey": {
                    "type": "string",
                    "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                },
                "rsaEncryptedKey": {
                    "type": "string",
                    "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource. Only one of kms_key_self_link,\u003cspan pulumi-lang-nodejs=\" rsaEncryptedKey \" pulumi-lang-dotnet=\" RsaEncryptedKey \" pulumi-lang-go=\" rsaEncryptedKey \" pulumi-lang-python=\" rsa_encrypted_key \" pulumi-lang-yaml=\" rsaEncryptedKey \" pulumi-lang-java=\" rsaEncryptedKey \" pulumi-lang-hcl=\" rsa_encrypted_key \"\u003e rsaEncryptedKey \u003c/span\u003eand\u003cspan pulumi-lang-nodejs=\" rawKey \" pulumi-lang-dotnet=\" RawKey \" pulumi-lang-go=\" rawKey \" pulumi-lang-python=\" raw_key \" pulumi-lang-yaml=\" rawKey \" pulumi-lang-java=\" rawKey \" pulumi-lang-hcl=\" raw_key \"\u003e rawKey \u003c/span\u003emay be set.\n"
                }
            },
            "type": "object",
            "required": [
                "kmsKeySelfLink",
                "kmsKeyServiceAccount",
                "rawKey",
                "rsaEncryptedKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceLifecyclePolicy:getRegionInstanceGroupManagerInstanceLifecyclePolicy": {
            "properties": {
                "defaultActionOnFailure": {
                    "type": "string",
                    "description": "Specifies the action that a MIG performs on a failed VM. If the value of the \u003cspan pulumi-lang-nodejs=\"\"onFailedHealthCheck\"\" pulumi-lang-dotnet=\"\"OnFailedHealthCheck\"\" pulumi-lang-go=\"\"onFailedHealthCheck\"\" pulumi-lang-python=\"\"on_failed_health_check\"\" pulumi-lang-yaml=\"\"onFailedHealthCheck\"\" pulumi-lang-java=\"\"onFailedHealthCheck\"\" pulumi-lang-hcl=\"\"on_failed_health_check\"\"\u003e\"onFailedHealthCheck\"\u003c/span\u003e field is DEFAULT_ACTION, then the same action also applies to the VMs on which your application fails a health check. Valid values are: REPAIR, DO_NOTHING. If REPAIR (default), then MIG automatically repairs a failed VM by recreating it. For more information, see about repairing VMs in a MIG. If DO_NOTHING, then MIG does not repair a failed VM.\n"
                },
                "forceUpdateOnRepair": {
                    "type": "string",
                    "description": "Specifies whether to apply the group's latest configuration when repairing a VM. Valid options are: YES, NO. If YES and you updated the group's instance template or per-instance configurations after the VM was created, then these changes are applied when VM is repaired. If NO (default), then updates are applied in accordance with the group's update policy type.\n"
                },
                "onFailedHealthCheck": {
                    "type": "string",
                    "description": "Specifies the action that a MIG performs on an unhealthy VM. A VM is marked as unhealthy when the application running on that VM fails a health check. Valid values are: DEFAULT_ACTION, DO_NOTHING, REPAIR. If DEFAULT_ACTION (default), then MIG uses the same action configured for the  \u003cspan pulumi-lang-nodejs=\"\"defaultActionOnFailure\"\" pulumi-lang-dotnet=\"\"DefaultActionOnFailure\"\" pulumi-lang-go=\"\"defaultActionOnFailure\"\" pulumi-lang-python=\"\"default_action_on_failure\"\" pulumi-lang-yaml=\"\"defaultActionOnFailure\"\" pulumi-lang-java=\"\"defaultActionOnFailure\"\" pulumi-lang-hcl=\"\"default_action_on_failure\"\"\u003e\"defaultActionOnFailure\"\u003c/span\u003e field. If DO_NOTHING, then MIG does not repair unhealthy VM. If REPAIR, then MIG automatically repairs an unhealthy VM by recreating it.\n"
                },
                "onRepairs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerInstanceLifecyclePolicyOnRepair:getRegionInstanceGroupManagerInstanceLifecyclePolicyOnRepair"
                    },
                    "description": "Configuration for VM repairs in the MIG.\n"
                }
            },
            "type": "object",
            "required": [
                "defaultActionOnFailure",
                "forceUpdateOnRepair",
                "onFailedHealthCheck",
                "onRepairs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerInstanceLifecyclePolicyOnRepair:getRegionInstanceGroupManagerInstanceLifecyclePolicyOnRepair": {
            "properties": {
                "allowChangingZone": {
                    "type": "string",
                    "description": "Specifies whether the MIG can change a VM's zone during a repair. If \"YES\", MIG can select a different zone for the VM during a repair. Else if \"NO\", MIG cannot change a VM's zone during a repair. The default value of\u003cspan pulumi-lang-nodejs=\" allowChangingZone \" pulumi-lang-dotnet=\" AllowChangingZone \" pulumi-lang-go=\" allowChangingZone \" pulumi-lang-python=\" allow_changing_zone \" pulumi-lang-yaml=\" allowChangingZone \" pulumi-lang-java=\" allowChangingZone \" pulumi-lang-hcl=\" allow_changing_zone \"\u003e allowChangingZone \u003c/span\u003eis \"NO\".\n"
                }
            },
            "type": "object",
            "required": [
                "allowChangingZone"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerNamedPort:getRegionInstanceGroupManagerNamedPort": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the instance group. Either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port number.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "port"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerParam:getRegionInstanceGroupManagerParam": {
            "properties": {
                "resourceManagerTags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Resource manager tags to bind to the managed instance group. The tags are key-value pairs. Keys must be in the format tagKeys/123 and values in the format tagValues/456.\n"
                }
            },
            "type": "object",
            "required": [
                "resourceManagerTags"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerResourcePolicy:getRegionInstanceGroupManagerResourcePolicy": {
            "properties": {
                "workloadPolicy": {
                    "type": "string",
                    "description": "The URL of the workload policy that is specified for this managed instance group. It can be a full or partial URL.\n"
                }
            },
            "type": "object",
            "required": [
                "workloadPolicy"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStandbyPolicy:getRegionInstanceGroupManagerStandbyPolicy": {
            "properties": {
                "initialDelaySec": {
                    "type": "integer",
                    "description": "Specifies the number of seconds that the MIG should wait to suspend or stop a VM after that VM was created. The initial delay gives the initialization script the time to prepare your VM for a quick scale out. The value of initial delay must be between 0 and 3600 seconds. The default value is 0.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. The default mode is \"MANUAL\".\n"
                }
            },
            "type": "object",
            "required": [
                "initialDelaySec",
                "mode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStatefulDisk:getRegionInstanceGroupManagerStatefulDisk": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": "A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the disk when the VM is deleted, but do not delete the disk. ON_PERMANENT_INSTANCE_DELETION will delete the stateful disk when the VM is permanently deleted from the instance group. The default is NEVER.\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "The device name of the disk to be attached.\n"
                }
            },
            "type": "object",
            "required": [
                "deleteRule",
                "deviceName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStatefulExternalIp:getRegionInstanceGroupManagerStatefulExternalIp": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": "A value that prescribes what should happen to an associated static Address resource when a VM instance is permanently deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the IP when the VM is deleted, but do not delete the address resource. ON_PERMANENT_INSTANCE_DELETION will delete the stateful address when the VM is permanently deleted from the instance group. The default is NEVER.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": "The network interface name\n"
                }
            },
            "type": "object",
            "required": [
                "deleteRule",
                "interfaceName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStatefulInternalIp:getRegionInstanceGroupManagerStatefulInternalIp": {
            "properties": {
                "deleteRule": {
                    "type": "string",
                    "description": "A value that prescribes what should happen to an associated static Address resource when a VM instance is permanently deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the IP when the VM is deleted, but do not delete the address resource. ON_PERMANENT_INSTANCE_DELETION will delete the stateful address when the VM is permanently deleted from the instance group. The default is NEVER.\n"
                },
                "interfaceName": {
                    "type": "string",
                    "description": "The network interface name\n"
                }
            },
            "type": "object",
            "required": [
                "deleteRule",
                "interfaceName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStatus:getRegionInstanceGroupManagerStatus": {
            "properties": {
                "allInstancesConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerStatusAllInstancesConfig:getRegionInstanceGroupManagerStatusAllInstancesConfig"
                    },
                    "description": "Status of all-instances configuration on the group.\n"
                },
                "isStable": {
                    "type": "boolean",
                    "description": "A bit indicating whether the managed instance group is in a stable state. A stable state means that: none of the instances in the managed instance group is currently undergoing any type of change (for example, creation, restart, or deletion); no future changes are scheduled for instances in the managed instance group; and the managed instance group itself is not being modified.\n"
                },
                "statefuls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerStatusStateful:getRegionInstanceGroupManagerStatusStateful"
                    },
                    "description": "Stateful status of the given Instance Group Manager.\n"
                },
                "versionTargets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerStatusVersionTarget:getRegionInstanceGroupManagerStatusVersionTarget"
                    },
                    "description": "A status of consistency of Instances' versions with their target version specified by version field on Instance Group Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "allInstancesConfigs",
                "isStable",
                "statefuls",
                "versionTargets"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStatusAllInstancesConfig:getRegionInstanceGroupManagerStatusAllInstancesConfig": {
            "properties": {
                "currentRevision": {
                    "type": "string",
                    "description": "Current all-instances configuration revision. This value is in RFC3339 text format.\n"
                },
                "effective": {
                    "type": "boolean",
                    "description": "A bit indicating whether this configuration has been applied to all managed instances in the group.\n"
                }
            },
            "type": "object",
            "required": [
                "currentRevision",
                "effective"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStatusStateful:getRegionInstanceGroupManagerStatusStateful": {
            "properties": {
                "hasStatefulConfig": {
                    "type": "boolean",
                    "description": "A bit indicating whether the managed instance group has stateful configuration, that is, if you have configured any items in a stateful policy or in per-instance configs. The group might report that it has no stateful config even when there is still some preserved state on a managed instance, for example, if you have deleted all PICs but not yet applied those deletions.\n"
                },
                "perInstanceConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerStatusStatefulPerInstanceConfig:getRegionInstanceGroupManagerStatusStatefulPerInstanceConfig"
                    },
                    "description": "Status of per-instance configs on the instances.\n"
                }
            },
            "type": "object",
            "required": [
                "hasStatefulConfig",
                "perInstanceConfigs"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStatusStatefulPerInstanceConfig:getRegionInstanceGroupManagerStatusStatefulPerInstanceConfig": {
            "properties": {
                "allEffective": {
                    "type": "boolean",
                    "description": "A bit indicating if all of the group's per-instance configs (listed in the output of a listPerInstanceConfigs API call) have status EFFECTIVE or there are no per-instance-configs.\n"
                }
            },
            "type": "object",
            "required": [
                "allEffective"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerStatusVersionTarget:getRegionInstanceGroupManagerStatusVersionTarget": {
            "properties": {
                "isReached": {
                    "type": "boolean",
                    "description": "A bit indicating whether version target has been reached in this managed instance group, i.e. all instances are in their target version. Instances' target version are specified by version field on Instance Group Manager.\n"
                }
            },
            "type": "object",
            "required": [
                "isReached"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerTargetSizePolicy:getRegionInstanceGroupManagerTargetSizePolicy": {
            "properties": {
                "mode": {
                    "type": "string",
                    "description": "The mode of target size policy based on which the MIG creates its VMs individually or all at once.\n"
                }
            },
            "type": "object",
            "required": [
                "mode"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerUpdatePolicy:getRegionInstanceGroupManagerUpdatePolicy": {
            "properties": {
                "instanceRedistributionType": {
                    "type": "string",
                    "description": "The instance redistribution policy for regional managed instance groups. Valid values are: \"PROACTIVE\", \"NONE\". If PROACTIVE (default), the group attempts to maintain an even distribution of VM instances across zones in the region. If NONE, proactive redistribution is disabled.\n"
                },
                "maxSurgeFixed": {
                    "type": "integer",
                    "description": "Specifies a fixed number of VM instances. This must be a positive integer. Conflicts with max_surge_percent. Both cannot be 0\n"
                },
                "maxSurgePercent": {
                    "type": "integer",
                    "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%. Conflicts with max_surge_fixed.\n"
                },
                "maxUnavailableFixed": {
                    "type": "integer",
                    "description": "Specifies a fixed number of VM instances. This must be a positive integer.\n"
                },
                "maxUnavailablePercent": {
                    "type": "integer",
                    "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%.\n"
                },
                "minReadySec": {
                    "type": "integer",
                    "description": "Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].\n"
                },
                "minimalAction": {
                    "type": "string",
                    "description": "Minimal action to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to update without stopping instances, RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a REFRESH, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.\n"
                },
                "mostDisruptiveAllowedAction": {
                    "type": "string",
                    "description": "Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to allow actions that do not need instance restart, RESTART to allow actions that can be applied without instance replacing or REPLACE to allow all possible actions. If the Updater determines that the minimal update action needed is more disruptive than most disruptive allowed action you specify it will not perform the update at all.\n"
                },
                "replacementMethod": {
                    "type": "string",
                    "description": "The instance replacement method for regional managed instance groups. Valid values are: \"RECREATE\", \"SUBSTITUTE\". If SUBSTITUTE (default), the group replaces VM instances with new instances that have randomly generated names. If RECREATE, instance names are preserved.  You must also set\u003cspan pulumi-lang-nodejs=\" maxUnavailableFixed \" pulumi-lang-dotnet=\" MaxUnavailableFixed \" pulumi-lang-go=\" maxUnavailableFixed \" pulumi-lang-python=\" max_unavailable_fixed \" pulumi-lang-yaml=\" maxUnavailableFixed \" pulumi-lang-java=\" maxUnavailableFixed \" pulumi-lang-hcl=\" max_unavailable_fixed \"\u003e maxUnavailableFixed \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" maxUnavailablePercent \" pulumi-lang-dotnet=\" MaxUnavailablePercent \" pulumi-lang-go=\" maxUnavailablePercent \" pulumi-lang-python=\" max_unavailable_percent \" pulumi-lang-yaml=\" maxUnavailablePercent \" pulumi-lang-java=\" maxUnavailablePercent \" pulumi-lang-hcl=\" max_unavailable_percent \"\u003e maxUnavailablePercent \u003c/span\u003eto be greater than 0.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of update process. You can specify either PROACTIVE so that the instance group manager proactively executes actions in order to bring instances to their target versions or OPPORTUNISTIC so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).\n"
                }
            },
            "type": "object",
            "required": [
                "instanceRedistributionType",
                "maxSurgeFixed",
                "maxSurgePercent",
                "maxUnavailableFixed",
                "maxUnavailablePercent",
                "minReadySec",
                "minimalAction",
                "mostDisruptiveAllowedAction",
                "replacementMethod",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerVersion:getRegionInstanceGroupManagerVersion": {
            "properties": {
                "instanceTemplate": {
                    "type": "string",
                    "description": "The full URL to an instance template from which all new instances of this version will be created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the instance group. Either \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\" pulumi-lang-hcl=\"`name`\"\u003e`name`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`selfLink`\" pulumi-lang-dotnet=\"`SelfLink`\" pulumi-lang-go=\"`selfLink`\" pulumi-lang-python=\"`self_link`\" pulumi-lang-yaml=\"`selfLink`\" pulumi-lang-java=\"`selfLink`\" pulumi-lang-hcl=\"`self_link`\"\u003e`selfLink`\u003c/span\u003e must be provided.\n"
                },
                "targetSizes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/gcp:compute/getRegionInstanceGroupManagerVersionTargetSize:getRegionInstanceGroupManagerVersionTargetSize"
                    },
                    "description": "The number of instances calculated as a fixed number or a percentage depending on the settings.\n"
                }
            },
            "type": "object",
            "required": [
                "instanceTemplate",
                "name",
                "targetSizes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceGroupManagerVersionTargetSize:getRegionInstanceGroupManagerVersionTargetSize": {
            "properties": {
                "fixed": {
                    "type": "integer",
                    "description": "The number of instances which are managed for this version. Conflicts with percent.\n"
                },
                "percent": {
                    "type": "integer",
                    "description": "The number of instances (calculated as percentage) which are managed for this version. Conflicts with fixed. Note that when using percent, rounding will be in favor of explicitly set\u003cspan pulumi-lang-nodejs=\" targetSize \" pulumi-lang-dotnet=\" TargetSize \" pulumi-lang-go=\" targetSize \" pulumi-lang-python=\" target_size \" pulumi-lang-yaml=\" targetSize \" pulumi-lang-java=\" targetSize \" pulumi-lang-hcl=\" target_size \"\u003e targetSize \u003c/span\u003evalues; a managed instance group with 2 instances and 2 versions, one of which has a target_size.percent of 60 will create 2 instances of that version.\n"
                }
            },
            "type": "object",
            "required": [
                "fixed",
                "percent"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "gcp:compute/getRegionInstanceTemplateAdvancedMachineFeature:getRegionInstanceTemplateAdvancedMachineFeature": {
            "properties": {
                "enableNestedVirtualization": {
                    "type": "boolean",
                    "description": "Whether to enable nested virtualization or not.\n"
                },
                "enableUefiNetworking": {
                    "type": "boolean",